xref: /vim-8.2.3635/runtime/syntax/vim.vim (revision 13d5aeef)
1071d4279SBram Moolenaar" Vim syntax file
27cba6c06SBram Moolenaar" Language:	Vim 7.4 script
37cba6c06SBram Moolenaar" Maintainer:	Charles E. Campbell <[email protected]>
4*13d5aeefSBram Moolenaar" Last Change:	January 20, 2016
5*13d5aeefSBram Moolenaar" Version:	7.4-40
6071d4279SBram Moolenaar" Automatically generated keyword lists: {{{1
7071d4279SBram Moolenaar
8071d4279SBram Moolenaar" Quit when a syntax file was already loaded {{{2
9071d4279SBram Moolenaarif exists("b:current_syntax")
10071d4279SBram Moolenaar  finish
11071d4279SBram Moolenaarendif
126be7f873SBram Moolenaarlet s:keepcpo= &cpo
136be7f873SBram Moolenaarset cpo&vim
14071d4279SBram Moolenaar
15071d4279SBram Moolenaar" vimTodo: contains common special-notices for comments {{{2
16071d4279SBram Moolenaar" Use the vimCommentGroup cluster to add your own.
17e2719096SBram Moolenaarsyn keyword vimTodo contained	COMBAK	FIXME	TODO	XXX
18217ad920SBram Moolenaarsyn cluster vimCommentGroup	contains=vimTodo,@Spell
19071d4279SBram Moolenaar
20071d4279SBram Moolenaar" regular vim commands {{{2
21*13d5aeefSBram Moolenaarsyn keyword vimCommand contained	a argd argu[ment] bf[irst] brea[k] buf cabc[lear] cc cfdo changes clo[se] cN[ext] colo[rscheme] con[tinue] cr[ewind] d delel deletp dep diffpu[t] dir doau ea e[dit] endfo[r] ene[w] files fini[sh] foldd[oopen] g h helpt[ags] iabc[lear] intro k l lan lc[d] le[ft] lfir[st] lh[elpgrep] lmapc[lear] lnf loadkeymap lpf[ile] luado mak[e] mes mkv mz nbs[tart] noautocmd o ownsyntax perld[o] pre[serve] promptf[ind] ptl[ast] ptr[ewind] py3do qa[ll] rec[over] reg[isters] rightb[elow] ru[ntime] sba[ll] sbp[revious] sci scr[iptnames] setl[ocal] sgi sh[ell] sIe sil[ent] sir sm[ap] sno[magic] sp spellu[ndo] sre[wind] srp star[tinsert] sun[hide] sy ta tabfir[st] tabN[ext] tags th[row] tN tr[ewind] un unl verb[ose] vimgrepa[dd] w winp[os] wqa[ll] xa[ll] xnoremenu
22*13d5aeefSBram Moolenaarsyn keyword vimCommand contained	ab argd[elete] as[cii] bl[ast] breaka[dd] bufdo cad[dbuffer] ccl[ose] cf[ile] chd[ir] cmapc[lear] cnf com cope[n] cs de delep delf di diffs[plit] di[splay] dp earlier el[se] endfun ex filet fir[st] foldo[pen] go[to] ha[rdcopy] hi if is[earch] keepa la lan[guage] lch[dir] lefta[bove] lgetb[uffer] l[ist] lN lNf lo[adview] lp[revious] luafile ma[rk] messages mkvie[w] mzf[ile] ne noh[lsearch] ol[dfiles] p po[p] prev[ious] promptr[epl] ptn pts[elect] pydo q[uit] red res[ize] ru rv[iminfo] sbf[irst] sbr[ewind] scI scs sf[ind] sgI si sig sim[alt] sIr sme snoreme spe spellw[rong] srg st startr[eplace] sunme syn tab tabl[ast] tabo[nly] tc[l] tj[ump] tn[ext] try una[bbreviate] unlo[ckvar] ve[rsion] vi[sual] wa[ll] win[size] w[rite] x[it] xprop
23*13d5aeefSBram Moolenaarsyn keyword vimCommand contained	abc[lear] argdo au bm[odified] breakd[el] b[uffer] cadde[xpr] cd cfir[st] che[ckpath] cn cNf comc[lear] co[py] cscope debug d[elete] delf[unction] dif difft[his] dj[ump] dr[op] ec elsei[f] endf[unction] exi[t] filetype fix[del] for gr[ep] h[elp] hid[e] ij[ump] isp[lit] keepalt lad la[st] lcl[ose] lex[pr] lgete[xpr] ll lne lnf[ile] loc[kmarks] lr[ewind] lv[imgrep] marks mk mkv[imrc] mz[scheme] new nor omapc[lear] pc[lose] popu p[rint] ps[earch] ptN pu[t] pyf[ile] quita[ll] redi[r] ret[ab] rub[y] sal[l] sbl[ast] sb[uffer] scl scscope sfir[st] sgl sI sIg sin sl smenu snoremenu spelld[ump] sp[lit] sri sta[g] stj[ump] sunmenu sync tabc[lose] tabm[ove] tabp[revious] tcld[o] tl[ast] tN[ext] ts[elect] u[ndo] uns[ilent] vert[ical] viu[sage] wh[ile] wn[ext] ws[verb] xmapc[lear] xunme
24*13d5aeefSBram Moolenaarsyn keyword vimCommand contained	abo[veleft] arge[dit] bad[d] bn[ext] breakl[ist] buffers caddf[ile] cdo cgetb[uffer] checkt[ime] cN cnf[ile] comp[iler] cpf[ile] cstag debugg[reedy] deletel dell diffg[et] dif[fupdate] dl ds[earch] echoe[rr] em[enu] en[dif] exu[sage] fin fo[ld] fu grepa[dd] helpc[lose] his[tory] il[ist] iuna[bbrev] keepj[umps] laddb[uffer] lat lcs lf lg[etfile] lla[st] lnew[er] lNf[ile] lockv[ar] ls lvimgrepa[dd] mat[ch] mk[exrc] mo n n[ext] nore on[ly] pe popu[p] pro pta[g] ptn[ext] pw[d] py[thon] r red[o] retu[rn] rubyd[o] san[dbox] sbm[odified] sc scp se[t] sg sgn sic sign sIn sla[st] sn[ext] so spe[llgood] spr[evious] srI star st[op] sus[pend] syncbind tabd[o] tabN tabr[ewind] tclf[ile] tm to[pleft] tu undoj[oin] up[date] vi vmapc[lear] win wN[ext] wundo xme xunmenu
25*13d5aeefSBram Moolenaarsyn keyword vimCommand contained	al[l] argg[lobal] ba[ll] bN[ext] br[ewind] bun[load] cal[l] ce[nter] cgete[xpr] cl cnew[er] cNf[ile] con cp[revious] cuna[bbrev] del deletep delm[arks] diffo[ff] dig dli[st] dsp[lit] echom[sg] en endt[ry] f fina[lly] foldc[lose] fun gui helpf[ind] i imapc[lear] j[oin] kee[pmarks] lad[dexpr] later lcscope lfdo lgr[ep] lli[st] lne[xt] lo lol[der] lt[ag] lw[indow] menut mks[ession] mod[e] nbc[lose] nmapc[lear] nos[wapfile] o[pen] ped[it] pp[op] profd[el] ptf[irst] ptN[ext] py python3 re redr[aw] rew[ind] rubyf[ile] sa[rgument] sbn[ext] sce scr setf[iletype] sgc sgp sIc sil sip sl[eep] sN[ext] sor[t] spelli[nfo] sr srl start stopi[nsert] sv[iew] syntime tabe[dit] tabnew tabs te[aroff] tm[enu] tp[revious] tu[nmenu] undol[ist] v vie[w] vne[w] winc[md] wp[revious] wv[iminfo] xmenu xwininfo
26*13d5aeefSBram Moolenaarsyn keyword vimCommand contained	ar argl[ocal] bd[elete] bo[tright] bro[wse] bw[ipeout] cat[ch] cex[pr] cg[etfile] cla[st] cn[ext] col[der] conf[irm] cq[uit] cw[indow] delc[ommand] deletl delp diffp[atch] dig[raphs] do e echon endf endw[hile] f[ile] fin[d] folddoc[losed] fu[nction] gvim helpg[rep] ia in ju[mps] keepp[atterns] laddf[ile] lb[uffer] ld[o] lf[ile] lgrepa[dd] lmak[e] lN[ext] loadk lop[en] lua ma menut[ranslate] mksp[ell] m[ove] nb[key] noa nu[mber] opt[ions] pe[rl] pr prof[ile] ptj[ump] ptp[revious] py3 q r[ead] redraws[tatus] ri[ght] rundo sav[eas] sbN[ext] scg scripte[ncoding] setg[lobal] sge sgr sie sIl sIp sm[agic] sni[ff] so[urce] spellr[epall] src srn startg[replace] sts[elect] sw[apname] t tabf[ind] tabn[ext] ta[g] tf[irst] tn tr u unh[ide] ve vim[grep] vs[plit] windo wq x xnoreme y[ank]
27*13d5aeefSBram Moolenaarsyn keyword vimCommand contained	arga[dd] ar[gs] bel[owright] bp[revious] bu c cb[uffer] cf c[hange] cl[ist]
28e2719096SBram Moolenaarsyn match   vimCommand contained	"\<z[-+^.=]\=\>"
29a6878375SBram Moolenaarsyn keyword vimStdPlugin contained	DiffOrig Man N[ext] P[rint] S TOhtml XMLent XMLns
30071d4279SBram Moolenaar
31071d4279SBram Moolenaar" vimOptions are caught only when contained in a vimSet {{{2
32*13d5aeefSBram Moolenaarsyn keyword vimOption contained	acd ambw arshape background ballooneval bg bl brk buftype cf cinkeys cmdwinheight com conceallevel cpo cscopequickfix csqf cursorbind define diffexpr dy ef eol esckeys fcs fdn ff fileignorecase flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imd imstatusfunc indentkeys isf isprint km lazyredraw lispwords lpl macatsui maxcombine mef mls modelines mousehide mp nu omnifunc paragraphs penc pi previewwindow printmbfont pythondll redrawtime revins ro ruler scb scs sessionoptions shellquote shiftround showfulltag sidescrolloff smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termbidi tgst titleold top ttimeoutlen ttyscroll ul ur verbosefile visualbell wcm wi wildmenu winfixwidth wm wrapscan
33*13d5aeefSBram Moolenaarsyn keyword vimOption contained	ai anti autochdir backspace balloonexpr bh bo browsedir casemap cfu cino cmp comments confirm cpoptions cscoperelative csre cursorcolumn delcombine diffopt ea efm ep et fdc fdo ffs filetype fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatefunc imdisable inc indk isfname joinspaces kmp lbr list ls magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste perldll pm printdevice printoptions pythonthreedll regexpengine ri rop rulerformat scr sect sft shellredir shiftwidth showmatch siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis termencoding thesaurus titlestring tpm ttm ttytype undodir ut vfile vop wd wic wildmode winheight wmh write
34*13d5aeefSBram Moolenaarsyn keyword vimOption contained	akm antialias autoindent backup bdir bin bomb bs cb ch cinoptions cms commentstring consk cpt cscopetag cst cursorline dex digraph ead ei equalalways eventignore fde fdt fic fillchars fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imactivatekey imi include inex isi js kp lcs listchars lsp makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc pastetoggle pex pmbcs printencoding prompt qe relativenumber rightleft rs runtimepath scroll sections sh shellslash shm showmode sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs terse tildeop tl tr tty tw undofile vb vi wa weirdinvert wig wildoptions winminheight wmnu writeany
35*13d5aeefSBram Moolenaarsyn keyword vimOption contained	al ar autoread backupcopy bdlay binary breakat bsdir cc charconvert cinw co compatible conskey crb cscopetagorder csto cwh dg dip eadirection ek equalprg ex fdi fen fileencoding fixendofline fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imaf iminsert includeexpr inf isident key langmap linebreak lm luadll makeprg maxmem mh mmp more mouses mzq nuw opfunc patchexpr pexpr pmbfn printexpr pt quoteescape remap rightleftcmd rtp sb scrollbind secure shcf shelltemp shortmess showtabline slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc textauto timeout tm ts ttybuiltin tx undolevels vbs viewdir wak wfh wildchar wim winminwidth wmw writebackup
36*13d5aeefSBram Moolenaarsyn keyword vimOption contained	aleph arab autowrite backupdir belloff biosk breakindent bsk ccv ci cinwords cocu complete copyindent cryptmethod cscopeverbose csverb debug dict dir eb enc errorbells expandtab fdl fenc fileencodings fixeol foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imak ims incsearch infercase isk keymap langmenu lines lmap lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchmode pfn popt printfont pumheight rdt renderoptions rl ru sbo scrolljump sel shell shelltype shortname shq sm so spellfile spr st sts swapsync syn tag tal tcldll textmode timeoutlen to tsl ttyfast uc undoreload vdir viewoptions warn wfw wildcharm winaltkeys winwidth wop writedelay
37*13d5aeefSBram Moolenaarsyn keyword vimOption contained	allowrevins arabic autowriteall backupext beval bioskey breakindentopt bt cd cin clipboard cole completefunc cot cscopepathcomp cspc cuc deco dictionary directory ed encoding errorfile exrc fdls fencs fileformat fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imc imsearch inde insertmode iskeyword keymodel langnoremap linespace lnr lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa path ph preserveindent printheader pvh re report rlc rubydll sbr scrolloff selection shellcmdflag shellxescape showbreak si smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb tenc textwidth title toolbar tsr ttym udf updatecount ve viminfo wb wh wildignore window wiv wrap ws
38*13d5aeefSBram Moolenaarsyn keyword vimOption contained	altkeymap arabicshape aw backupskip bex bk bri bufhidden cdpath cindent cm colorcolumn completeopt cp cscopeprg csprg cul def diff display edcompatible endofline errorformat fcl fdm fex fileformats fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imcmdline imsf indentexpr is isp keywordprg laststatus lisp loadplugins ma matchtime mco ml modeline mousefocus mousetime nrformats ofu para pdev pheader previewheight printmbcharset pvw readonly restorescreen rnu ruf sc scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi term tf titlelen toolbariconsize ttimeout ttymouse udir updatetime verbose virtualedit wc whichwrap wildignorecase winfixheight wiw wrapmargin ww
39*13d5aeefSBram Moolenaarsyn keyword vimOption contained	ambiwidth ari awa balloondelay bexpr bkc briopt buflisted cedit cink cmdheight columns concealcursor
40071d4279SBram Moolenaar
41071d4279SBram Moolenaar" vimOptions: These are the turn-off setting variants {{{2
42*13d5aeefSBram Moolenaarsyn keyword vimOption contained	noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobreakindent nocf nocindent noconsk nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangnoremap nolbr nolisp nolnr nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd 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
43*13d5aeefSBram Moolenaarsyn keyword vimOption contained	noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobiosk nobl nobri noci nocompatible noconskey nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs nolazyredraw nolinebreak nolist noloadplugins nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab 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
44*13d5aeefSBram Moolenaarsyn keyword vimOption contained	noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobioskey nobomb nobuflisted nocin noconfirm nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noendofline noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois
45071d4279SBram Moolenaar
46071d4279SBram Moolenaar" vimOptions: These are the invertible variants {{{2
47*13d5aeefSBram Moolenaarsyn keyword vimOption contained	invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbinary invbk invbreakindent invcf invcindent invconsk invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible inveol invesckeys invexpandtab invfic invfixeol invfoldenable invgd invhid invhkmap invhls invicon invimc invimdisable invinfercase invjoinspaces invlangnoremap invlbr invlisp invlnr invlpl invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrl invro invru invsb invscb invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd 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
48*13d5aeefSBram Moolenaarsyn keyword vimOption contained	invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invbeval invbiosk invbl invbri invci invcompatible invconskey invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs invlazyredraw invlinebreak invlist invloadplugins invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrnu invrs invruler invsc invscrollbind invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab 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
49*13d5aeefSBram Moolenaarsyn keyword vimOption contained	invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbioskey invbomb invbuflisted invcin invconfirm invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invendofline inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis
50071d4279SBram Moolenaar
51071d4279SBram Moolenaar" termcap codes (which can also be set) {{{2
52*13d5aeefSBram Moolenaarsyn keyword vimOption contained	t_AB t_al t_bc t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_EI t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl 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_RB t_RI t_RV t_Sb t_se t_Sf t_SI t_so t_sr t_SR t_te t_ti t_ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xn t_xs t_ZH t_ZR
53*13d5aeefSBram Moolenaarsyn keyword vimOption contained	t_AF t_AL t_cd t_Ce t_cm t_cs t_CS t_da t_dl
54071d4279SBram Moolenaarsyn match   vimOption contained	"t_%1"
55071d4279SBram Moolenaarsyn match   vimOption contained	"t_#2"
56071d4279SBram Moolenaarsyn match   vimOption contained	"t_#4"
57071d4279SBram Moolenaarsyn match   vimOption contained	"t_@7"
58071d4279SBram Moolenaarsyn match   vimOption contained	"t_*7"
59071d4279SBram Moolenaarsyn match   vimOption contained	"t_&8"
60071d4279SBram Moolenaarsyn match   vimOption contained	"t_%i"
61071d4279SBram Moolenaarsyn match   vimOption contained	"t_k;"
62071d4279SBram Moolenaar
63071d4279SBram Moolenaar" unsupported settings: these are supported by vi but don't do anything in vim {{{2
64cd71fa3cSBram Moolenaarsyn keyword vimErrSetting contained	hardtabs ht w1200 w300 w9600
65071d4279SBram Moolenaar
6680a94a58SBram Moolenaar" AutoCmd Events {{{2
67071d4279SBram Moolenaarsyn case ignore
68a0f849eeSBram Moolenaarsyn keyword vimAutoEvent contained	BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre Cmd-event CmdUndefined CmdwinEnter CmdwinLeave ColorScheme CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabEnter TabLeave TermChanged TermResponse TextChanged TextChangedI User UserGettingBored VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave
69071d4279SBram Moolenaar
70071d4279SBram Moolenaar" Highlight commonly used Groupnames {{{2
71b2c0350cSBram Moolenaarsyn 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
72071d4279SBram Moolenaar
73071d4279SBram Moolenaar" Default highlighting groups {{{2
74a6878375SBram Moolenaarsyn keyword vimHLGroup contained	ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
75293ee4d4SBram Moolenaarsyn match vimHLGroup contained	"Conceal"
76071d4279SBram Moolenaarsyn case match
77071d4279SBram Moolenaar
78071d4279SBram Moolenaar" Function Names {{{2
79*13d5aeefSBram Moolenaarsyn keyword vimFuncName contained	abs alloc_fail argc argv assert_exception assert_true browse buflisted bufnr byteidx ceil cindent complete confirm cosh cursor did_filetype empty eventhandler exists expr8 filereadable finddir floor fnamemodify foldlevel foreground get getchar getcmdline getcmdwintype getfontname getftime getloclist getpos getregtype getwinposx glob has hasmapto histget hlID indent inputdialog inputsave invert items len line localtime luaeval mapcheck matchaddpos matchend max mode nr2char perleval printf pyeval reltime remote_foreground remote_send repeat round screencol searchdecl searchpos setbufvar setline setpos settabvar sha256 simplify sort spellsuggest str2float strdisplaywidth string strridx submatch synID synIDtrans system tabpagebuflist tabpagewinnr taglist tanh tolower tr type undotree values visualmode winbufnr winheight winnr winrestview winwidth writefile
80*13d5aeefSBram Moolenaarsyn keyword vimFuncName contained	acos and argidx asin assert_fails atan browsedir bufloaded bufwinnr byteidxcomp changenr clearmatches complete_add copy count deepcopy diff_filler escape executable exp extend filewritable findfile fmod foldclosed foldtext function getbufline getcharmod getcmdpos getcurpos getfperm getftype getmatches getqflist gettabvar getwinposy glob2regpat has_key histadd histnr hostname index inputlist inputsecret isdirectory join libcall line2byte log map match matcharg matchlist min mzeval or pow pumvisible range reltimestr remote_peek remove resolve screenattr screenrow searchpair server2client setcharsearch setloclist setqflist settabwinvar shellescape sin soundfold split str2nr strftime strlen strtrans substitute synIDattr synstack systemlist tabpagenr tagfiles tan tempname toupper trunc undofile uniq virtcol wildmenumode wincol winline winrestcmd winsaveview wordcount xor
81*13d5aeefSBram Moolenaarsyn keyword vimFuncName contained	add append arglistid assert_equal assert_false atan2 bufexists bufname byte2line call char2nr col complete_check cos cscope_connection delete diff_hlID eval exepath expand feedkeys filter float2nr fnameescape foldclosedend foldtextresult garbagecollect getbufvar getcharsearch getcmdtype getcwd getfsize getline getpid getreg gettabwinvar getwinvar globpath haslocaldir histdel hlexists iconv input inputrestore insert islocked keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr mkdir nextnonblank pathshorten prevnonblank py3eval readfile remote_expr remote_read rename reverse screenchar search searchpairpos serverlist setcmdpos setmatches setreg setwinvar shiftwidth sinh spellbadword sqrt strchars stridx strpart strwidth synconcealed
82071d4279SBram Moolenaar
83ac7bd638SBram Moolenaar"--- syntax here and above generated by mkvimvim ---
84cfbc5ee4SBram Moolenaar" Special Vim Highlighting (not automatic) {{{1
85071d4279SBram Moolenaar
86a0f849eeSBram Moolenaar" Set up folding commands
87a0f849eeSBram Moolenaarif exists("g:vimsyn_folding") && g:vimsyn_folding =~ '[aflmpPrt]'
88a0f849eeSBram Moolenaar if g:vimsyn_folding =~ 'a'
89a0f849eeSBram Moolenaar  com! -nargs=* VimFolda <args> fold
90a0f849eeSBram Moolenaar else
91a0f849eeSBram Moolenaar  com! -nargs=* VimFolda <args>
92a0f849eeSBram Moolenaar endif
93a0f849eeSBram Moolenaar if g:vimsyn_folding =~ 'f'
94a0f849eeSBram Moolenaar  com! -nargs=* VimFoldf <args> fold
95a0f849eeSBram Moolenaar else
96a0f849eeSBram Moolenaar  com! -nargs=* VimFoldf <args>
97a0f849eeSBram Moolenaar endif
98a0f849eeSBram Moolenaar if g:vimsyn_folding =~ 'l'
99a0f849eeSBram Moolenaar  com! -nargs=* VimFoldl <args> fold
100a0f849eeSBram Moolenaar else
101a0f849eeSBram Moolenaar  com! -nargs=* VimFoldl <args>
102a0f849eeSBram Moolenaar endif
103a0f849eeSBram Moolenaar if g:vimsyn_folding =~ 'm'
104a0f849eeSBram Moolenaar  com! -nargs=* VimFoldm <args> fold
105a0f849eeSBram Moolenaar else
106a0f849eeSBram Moolenaar  com! -nargs=* VimFoldm <args>
107a0f849eeSBram Moolenaar endif
108a0f849eeSBram Moolenaar if g:vimsyn_folding =~ 'p'
109a0f849eeSBram Moolenaar  com! -nargs=* VimFoldp <args> fold
110a0f849eeSBram Moolenaar else
111a0f849eeSBram Moolenaar  com! -nargs=* VimFoldp <args>
112a0f849eeSBram Moolenaar endif
113a0f849eeSBram Moolenaar if g:vimsyn_folding =~ 'P'
114a0f849eeSBram Moolenaar  com! -nargs=* VimFoldP <args> fold
115a0f849eeSBram Moolenaar else
116a0f849eeSBram Moolenaar  com! -nargs=* VimFoldP <args>
117a0f849eeSBram Moolenaar endif
118a0f849eeSBram Moolenaar if g:vimsyn_folding =~ 'r'
119a0f849eeSBram Moolenaar  com! -nargs=* VimFoldr <args> fold
120a0f849eeSBram Moolenaar else
121a0f849eeSBram Moolenaar  com! -nargs=* VimFoldr <args>
122a0f849eeSBram Moolenaar endif
123a0f849eeSBram Moolenaar if g:vimsyn_folding =~ 't'
124a0f849eeSBram Moolenaar  com! -nargs=* VimFoldt <args> fold
125a0f849eeSBram Moolenaar else
126a0f849eeSBram Moolenaar  com! -nargs=* VimFoldt <args>
127a0f849eeSBram Moolenaar endif
128a0f849eeSBram Moolenaarelse
129a0f849eeSBram Moolenaar com! -nargs=*	VimFolda	<args>
130a0f849eeSBram Moolenaar com! -nargs=*	VimFoldf	<args>
131a0f849eeSBram Moolenaar com! -nargs=*	VimFoldl	<args>
132a0f849eeSBram Moolenaar com! -nargs=*	VimFoldm	<args>
133a0f849eeSBram Moolenaar com! -nargs=*	VimFoldp	<args>
134a0f849eeSBram Moolenaar com! -nargs=*	VimFoldP	<args>
135a0f849eeSBram Moolenaar com! -nargs=*	VimFoldr	<args>
136a0f849eeSBram Moolenaar com! -nargs=*	VimFoldt	<args>
137a0f849eeSBram Moolenaarendif
138a0f849eeSBram Moolenaar
139fa01c39dSBram Moolenaar" commands not picked up by the generator (due to non-standard format)
140fa01c39dSBram Moolenaarsyn keyword vimCommand contained	py3
141fa01c39dSBram Moolenaar
1423577c6faSBram Moolenaar" Deprecated variable options {{{2
1433577c6faSBram Moolenaarif exists("g:vim_minlines")
1443577c6faSBram Moolenaar let g:vimsyn_minlines= g:vim_minlines
1453577c6faSBram Moolenaarendif
1463577c6faSBram Moolenaarif exists("g:vim_maxlines")
1473577c6faSBram Moolenaar let g:vimsyn_maxlines= g:vim_maxlines
1483577c6faSBram Moolenaarendif
1493577c6faSBram Moolenaarif exists("g:vimsyntax_noerror")
1503577c6faSBram Moolenaar let g:vimsyn_noerror= g:vimsyntax_noerror
1513577c6faSBram Moolenaarendif
1523577c6faSBram Moolenaar
153cfbc5ee4SBram Moolenaar" Numbers {{{2
154071d4279SBram Moolenaar" =======
1559da7ff70SBram Moolenaarsyn match vimNumber	"\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand
1569da7ff70SBram Moolenaarsyn match vimNumber	"-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\="  skipwhite nextgroup=vimGlobal,vimSubst,vimCommand
157071d4279SBram Moolenaarsyn match vimNumber	"\<0[xX]\x\+"
158e2719096SBram Moolenaarsyn match vimNumber	"\%(^\|[^a-zA-Z]\)\zs#\x\{6}"
159071d4279SBram Moolenaar
160cfbc5ee4SBram Moolenaar" All vimCommands are contained by vimIsCommands. {{{2
161b4ff518dSBram Moolenaarsyn match vimCmdSep	"[:|]\+"	skipwhite nextgroup=vimAddress,vimAutoCmd,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
162293ee4d4SBram Moolenaarsyn match vimIsCommand	"\<\h\w*\>"	contains=vimCommand
16383d1b190SBram Moolenaarsyn match vimVar        contained	"\<\h[a-zA-Z0-9#_]*\>"
16483d1b190SBram Moolenaarsyn match vimVar		"\<[bwglsav]:\h[a-zA-Z0-9#_]*\>"
16583d1b190SBram Moolenaarsyn match vimFBVar      contained   "\<[bwglsav]:\h[a-zA-Z0-9#_]*\>"
1663b1ddfedSBram Moolenaarsyn keyword vimCommand  contained	in
167071d4279SBram Moolenaar
168cfbc5ee4SBram Moolenaar" Insertions And Appends: insert append {{{2
169071d4279SBram Moolenaar" =======================
170071d4279SBram Moolenaarsyn region vimInsert	matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$"	matchgroup=vimCommand end="^\.$""
171071d4279SBram Moolenaarsyn region vimInsert	matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$"	matchgroup=vimCommand end="^\.$""
172071d4279SBram Moolenaarsyn region vimInsert	matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$"	matchgroup=vimCommand end="^\.$""
173071d4279SBram Moolenaar
174cfbc5ee4SBram Moolenaar" Behave! {{{2
175071d4279SBram Moolenaar" =======
176071d4279SBram Moolenaarsyn match   vimBehave	"\<be\%[have]\>" skipwhite nextgroup=vimBehaveModel,vimBehaveError
177071d4279SBram Moolenaarsyn keyword vimBehaveModel contained	mswin	xterm
1786be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
179071d4279SBram Moolenaar syn match   vimBehaveError contained	"[^ ]\+"
180cfbc5ee4SBram Moolenaarendif
181071d4279SBram Moolenaar
182cfbc5ee4SBram Moolenaar" Filetypes {{{2
183071d4279SBram Moolenaar" =========
184293ee4d4SBram Moolenaarsyn match   vimFiletype	"\<filet\%[ype]\(\s\+\I\i*\)*"	skipwhite contains=vimFTCmd,vimFTOption,vimFTError
1856be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
186071d4279SBram Moolenaar syn match   vimFTError  contained	"\I\i*"
187cfbc5ee4SBram Moolenaarendif
188071d4279SBram Moolenaarsyn keyword vimFTCmd    contained	filet[ype]
189071d4279SBram Moolenaarsyn keyword vimFTOption contained	detect indent off on plugin
190071d4279SBram Moolenaar
191cfbc5ee4SBram Moolenaar" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
192071d4279SBram Moolenaar" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
193e2719096SBram Moolenaarsyn cluster vimAugroupList	contains=vimAugroup,vimIsCommand,vimCommand,vimUserCmd,vimExecute,vimNotFunc,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimMap,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
194b4ff518dSBram Moolenaarif exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'a'
195b4ff518dSBram Moolenaar syn region  vimAugroup	fold matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>"	contains=vimAutoCmd,@vimAugroupList
196b4ff518dSBram Moolenaarelse
197b4ff518dSBram Moolenaar syn region  vimAugroup	matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>"	contains=vimAutoCmd,@vimAugroupList
198b4ff518dSBram Moolenaarendif
1993b1ddfedSBram Moolenaarsyn match   vimAugroup	"aug\%[roup]!"	contains=vimAugroupKey
2006be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
201071d4279SBram Moolenaar syn match   vimAugroupError	"\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
202cfbc5ee4SBram Moolenaarendif
20383d1b190SBram Moolenaarsyn keyword vimAugroupKey contained	aug[roup]
204071d4279SBram Moolenaar
205cfbc5ee4SBram Moolenaar" Operators: {{{2
206071d4279SBram Moolenaar" =========
2079da7ff70SBram Moolenaarsyn cluster	vimOperGroup	contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
208071d4279SBram Moolenaarsyn match	vimOper	"\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}"	skipwhite nextgroup=vimString,vimSpecFile
209071d4279SBram Moolenaarsyn match	vimOper	"||\|&&\|[-+.]"	skipwhite nextgroup=vimString,vimSpecFile
21083d1b190SBram Moolenaarsyn region	vimOperParen 	matchgroup=vimParenSep	start="(" end=")" contains=@vimOperGroup
21183d1b190SBram Moolenaarsyn region	vimOperParen	matchgroup=vimSep		start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
2126be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
213071d4279SBram Moolenaar syn match	vimOperError	")"
214cfbc5ee4SBram Moolenaarendif
215071d4279SBram Moolenaar
2163577c6faSBram Moolenaar" Functions : Tag is provided for those who wish to highlight tagged functions {{{2
2173577c6faSBram Moolenaar" =========
2185c73622aSBram Moolenaarsyn cluster	vimFuncList	contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
219b4ff518dSBram Moolenaarsyn cluster	vimFuncBodyList	contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand
2205c73622aSBram Moolenaarsyn match	vimFunction	"\<fu\%[nction]!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*("	contains=@vimFuncList nextgroup=vimFuncBody
2215c73622aSBram Moolenaar
222b4ff518dSBram Moolenaarif exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f'
223b4ff518dSBram Moolenaar syn region	vimFuncBody  contained	fold start="\ze\s*("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
224b4ff518dSBram Moolenaarelse
225b4ff518dSBram Moolenaar syn region	vimFuncBody  contained	start="\ze\s*("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
226b4ff518dSBram Moolenaarendif
227b4ff518dSBram Moolenaarsyn match	vimFuncVar   contained	"a:\(\K\k*\|\d\+\)"
2283577c6faSBram Moolenaarsyn match	vimFuncSID   contained	"\c<sid>\|\<s:"
2293577c6faSBram Moolenaarsyn keyword	vimFuncKey   contained	fu[nction]
2303577c6faSBram Moolenaarsyn match	vimFuncBlank contained	"\s\+"
2313577c6faSBram Moolenaar
2323577c6faSBram Moolenaarsyn keyword	vimPattern   contained	start	skip	end
2333577c6faSBram Moolenaar
234cfbc5ee4SBram Moolenaar" Special Filenames, Modifiers, Extension Removal: {{{2
235071d4279SBram Moolenaar" ===============================================
236071d4279SBram Moolenaarsyn match	vimSpecFile	"<c\(word\|WORD\)>"	nextgroup=vimSpecFileMod,vimSubst
237071d4279SBram Moolenaarsyn match	vimSpecFile	"<\([acs]file\|amatch\|abuf\)>"	nextgroup=vimSpecFileMod,vimSubst
238071d4279SBram Moolenaarsyn match	vimSpecFile	"\s%[ \t:]"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
239071d4279SBram Moolenaarsyn match	vimSpecFile	"\s%$"ms=s+1	nextgroup=vimSpecFileMod,vimSubst
240071d4279SBram Moolenaarsyn match	vimSpecFile	"\s%<"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
241071d4279SBram Moolenaarsyn match	vimSpecFile	"#\d\+\|[#%]<\>"	nextgroup=vimSpecFileMod,vimSubst
242071d4279SBram Moolenaarsyn match	vimSpecFileMod	"\(:[phtre]\)\+"	contained
243071d4279SBram Moolenaar
244cfbc5ee4SBram Moolenaar" User-Specified Commands: {{{2
245071d4279SBram Moolenaar" =======================
2465c73622aSBram Moolenaarsyn cluster	vimUserCmdList	contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
247071d4279SBram Moolenaarsyn keyword	vimUserCommand	contained	com[mand]
248b4ff518dSBram Moolenaarsyn match	vimUserCmd	"\<com\%[mand]!\=\>.*$"	contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList
249b4ff518dSBram Moolenaarsyn match	vimUserAttrbError	contained	"-\a\+\ze\s"
250b4ff518dSBram Moolenaarsyn match	vimUserAttrb	contained	"-nargs=[01*?+]"	contains=vimUserAttrbKey,vimOper
251b4ff518dSBram Moolenaarsyn match	vimUserAttrb	contained	"-complete="		contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
252b4ff518dSBram Moolenaarsyn match	vimUserAttrb	contained	"-range\(=%\|=\d\+\)\="	contains=vimNumber,vimOper,vimUserAttrbKey
253b4ff518dSBram Moolenaarsyn match	vimUserAttrb	contained	"-count\(=\d\+\)\="	contains=vimNumber,vimOper,vimUserAttrbKey
254b4ff518dSBram Moolenaarsyn match	vimUserAttrb	contained	"-bang\>"		contains=vimOper,vimUserAttrbKey
255071d4279SBram Moolenaarsyn match	vimUserAttrb	contained	"-bar\>"		contains=vimOper,vimUserAttrbKey
256b4ff518dSBram Moolenaarsyn match	vimUserAttrb	contained	"-buffer\>"		contains=vimOper,vimUserAttrbKey
257b4ff518dSBram Moolenaarsyn match	vimUserAttrb	contained	"-register\>"		contains=vimOper,vimUserAttrbKey
2586be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
259071d4279SBram Moolenaar syn match	vimUserCmdError	contained	"\S\+\>"
260cfbc5ee4SBram Moolenaarendif
261071d4279SBram Moolenaarsyn case ignore
262071d4279SBram Moolenaarsyn keyword	vimUserAttrbKey   contained	bar	ban[g]	cou[nt]	ra[nge] com[plete]	n[args]	re[gister]
2639da7ff70SBram Moolenaarsyn keyword	vimUserAttrbCmplt contained	augroup buffer color command compiler cscope dir environment event expression file file_in_path filetype function help highlight locale mapping menu option shellcmd sign syntax tag tag_listfiles var
264a93fa7eeSBram Moolenaarsyn keyword	vimUserAttrbCmplt contained	custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
2659da7ff70SBram Moolenaarsyn match	vimUserAttrbCmpltFunc contained	",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
266a93fa7eeSBram Moolenaar
267071d4279SBram Moolenaarsyn case match
268071d4279SBram Moolenaarsyn match	vimUserAttrbCmplt contained	"custom,\u\w*"
269071d4279SBram Moolenaar
270cfbc5ee4SBram Moolenaar" Lower Priority Comments: after some vim commands... {{{2
271071d4279SBram Moolenaar" =======================
272071d4279SBram Moolenaarsyn match	vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString
273071d4279SBram Moolenaarsyn match	vimComment	+\<endif\s\+".*$+lc=5	contains=@vimCommentGroup,vimCommentString
274071d4279SBram Moolenaarsyn match	vimComment	+\<else\s\+".*$+lc=4	contains=@vimCommentGroup,vimCommentString
2754770d09aSBram Moolenaarsyn region	vimCommentString	contained oneline start='\S\s\+"'ms=e	end='"'
276071d4279SBram Moolenaar
277cfbc5ee4SBram Moolenaar" Environment Variables: {{{2
278071d4279SBram Moolenaar" =====================
279071d4279SBram Moolenaarsyn match	vimEnvvar	"\$\I\i*"
280071d4279SBram Moolenaarsyn match	vimEnvvar	"\${\I\i*}"
281071d4279SBram Moolenaar
282cfbc5ee4SBram Moolenaar" In-String Specials: {{{2
283071d4279SBram Moolenaar" Try to catch strings, if nothing else matches (therefore it must precede the others!)
284071d4279SBram Moolenaar"  vimEscapeBrace handles ["]  []"] (ie. "s don't terminate string inside [])
285d68071d8SBram Moolenaarsyn region	vimEscapeBrace	oneline   contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
286071d4279SBram Moolenaarsyn match	vimPatSepErr	contained	"\\)"
287071d4279SBram Moolenaarsyn match	vimPatSep	contained	"\\|"
288383f9bc3SBram Moolenaarsyn region	vimPatSepZone	oneline   contained   matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]"	contains=@vimStringGroup
289383f9bc3SBram Moolenaarsyn region	vimPatRegion	contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)"	contains=@vimSubstList oneline
290071d4279SBram Moolenaarsyn match	vimNotPatSep	contained	"\\\\"
2919964e468SBram Moolenaarsyn cluster	vimStringGroup	contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
2929da7ff70SBram Moolenaarsyn region	vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+	contains=@vimStringGroup
2939da7ff70SBram Moolenaarsyn region	vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+
294071d4279SBram Moolenaarsyn region	vimString	oneline	start=+=!+lc=1	skip=+\\\\\|\\!+ end=+!+	contains=@vimStringGroup
295071d4279SBram Moolenaarsyn region	vimString	oneline	start="=+"lc=1	skip="\\\\\|\\+" end="+"	contains=@vimStringGroup
296071d4279SBram Moolenaarsyn region	vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup
297071d4279SBram Moolenaarsyn match	vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
298071d4279SBram Moolenaarsyn match	vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
299071d4279SBram Moolenaar
300cfbc5ee4SBram Moolenaar" Substitutions: {{{2
301071d4279SBram Moolenaar" =============
302071d4279SBram Moolenaarsyn cluster	vimSubstList	contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
303071d4279SBram Moolenaarsyn cluster	vimSubstRepList	contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
304071d4279SBram Moolenaarsyn cluster	vimSubstList	add=vimCollection
3059da7ff70SBram Moolenaarsyn match	vimSubst	"\(:\+\s*\|^\s*\||\s*\)\<\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[:[:alpha:]]\@!" nextgroup=vimSubstPat
3065c73622aSBram Moolenaarsyn match	vimSubst	"s\%[ubstitute][:#[:alpha:]]\@!"	nextgroup=vimSubstPat contained
307071d4279SBram Moolenaarsyn match	vimSubst	"/\zss\%[ubstitute]\ze/"	nextgroup=vimSubstPat
308071d4279SBram Moolenaarsyn match	vimSubst1       contained	"s\%[ubstitute]\>"	nextgroup=vimSubstPat
309071d4279SBram Moolenaarsyn 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
310071d4279SBram Moolenaarsyn region	vimSubstRep4    contained	matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList	nextgroup=vimSubstFlagErr	oneline
311071d4279SBram Moolenaarsyn region	vimCollection   contained transparent	start="\\\@<!\[" skip="\\\[" end="\]"	contains=vimCollClass
312071d4279SBram Moolenaarsyn match	vimCollClassErr contained	"\[:.\{-\}:\]"
313071d4279SBram Moolenaarsyn match	vimCollClass    contained transparent	"\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
314071d4279SBram Moolenaarsyn match	vimSubstSubstr  contained	"\\z\=\d"
315071d4279SBram Moolenaarsyn match	vimSubstTwoBS   contained	"\\\\"
316a5792f58SBram Moolenaarsyn match	vimSubstFlagErr contained	"[^< \t\r|]\+" contains=vimSubstFlags
317071d4279SBram Moolenaarsyn match	vimSubstFlags   contained	"[&cegiIpr]\+"
318071d4279SBram Moolenaar
319cfbc5ee4SBram Moolenaar" 'String': {{{2
3208b6144bdSBram Moolenaarsyn match	vimString	"[^(,]'[^']\{-}\zs'"
321071d4279SBram Moolenaar
322cfbc5ee4SBram Moolenaar" Marks, Registers, Addresses, Filters: {{{2
323071d4279SBram Moolenaarsyn match	vimMark	"'[a-zA-Z0-9]\ze[-+,!]"	nextgroup=vimOper,vimMarkNumber,vimSubst
324071d4279SBram Moolenaarsyn match	vimMark	"'[<>]\ze[-+,!]"		nextgroup=vimOper,vimMarkNumber,vimSubst
325071d4279SBram Moolenaarsyn match	vimMark	",\zs'[<>]\ze"		nextgroup=vimOper,vimMarkNumber,vimSubst
326071d4279SBram Moolenaarsyn match	vimMark	"[!,:]\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
327071d4279SBram Moolenaarsyn match	vimMark	"\<norm\%[al]\s\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
328071d4279SBram Moolenaarsyn match	vimMarkNumber	"[-+]\d\+"		nextgroup=vimSubst contained contains=vimOper
329071d4279SBram Moolenaarsyn match	vimPlainMark contained	"'[a-zA-Z0-9]"
330071d4279SBram Moolenaar
331b4ff518dSBram Moolenaarsyn match	vimRegister	'[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
3325b8d8fdbSBram Moolenaarsyn match	vimRegister	'\<norm\s\+\zs"[a-zA-Z0-9]'
3335b8d8fdbSBram Moolenaarsyn match	vimRegister	'\<normal\s\+\zs"[a-zA-Z0-9]'
334cfbc5ee4SBram Moolenaarsyn match	vimRegister	'@"'
335071d4279SBram Moolenaarsyn match	vimPlainRegister contained	'"[a-zA-Z0-9\-:.%#*+=]'
336071d4279SBram Moolenaar
3375b8d8fdbSBram Moolenaarsyn match	vimAddress	",\zs[.$]"	skipwhite nextgroup=vimSubst1
3385b8d8fdbSBram Moolenaarsyn match	vimAddress	"%\ze\a"	skipwhite nextgroup=vimString,vimSubst1
339071d4279SBram Moolenaar
340071d4279SBram Moolenaarsyn match	vimFilter contained	"^!.\{-}\(|\|$\)"		contains=vimSpecFile
341d960d76dSBram Moolenaarsyn match	vimFilter contained	"\A!.\{-}\(|\|$\)"ms=s+1	contains=vimSpecFile,vimFunction,vimFuncName,vimOperParen
342071d4279SBram Moolenaar
343cfbc5ee4SBram Moolenaar" Complex repeats (:h complex-repeat) {{{2
3446be7f873SBram Moolenaarsyn match	vimCmplxRepeat	'[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
3456be7f873SBram Moolenaarsyn match	vimCmplxRepeat	'@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
346071d4279SBram Moolenaar
347cfbc5ee4SBram Moolenaar" Set command and associated set-options (vimOptions) with comment {{{2
34874cbdf03SBram Moolenaarsyn region	vimSet		matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
3499da7ff70SBram Moolenaarsyn region	vimSetEqual	contained	start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar oneline
350071d4279SBram Moolenaarsyn region	vimSetString	contained	start=+="+hs=s+1	skip=+\\\\\|\\"+  end=+"+	contains=vimCtrlChar
351b4ff518dSBram Moolenaarsyn match	vimSetSep	contained	"[,:]" skipwhite nextgroup=vimCommand
3525c73622aSBram Moolenaarsyn match	vimSetMod	contained	"&vim\=\|[!&?<]\|all&"
353071d4279SBram Moolenaar
354cfbc5ee4SBram Moolenaar" Let {{{2
355071d4279SBram Moolenaar" ===
3565c73622aSBram Moolenaarsyn keyword	vimLet	let	unl[et]	skipwhite nextgroup=vimVar,vimFuncVar
357071d4279SBram Moolenaar
358e37d50a5SBram Moolenaar" Abbreviations {{{2
359e37d50a5SBram Moolenaar" =============
360e37d50a5SBram Moolenaarsyn keyword vimAbb	ab[breviate] ca[bbrev] inorea[bbrev] cnorea[bbrev] norea[bbrev] ia[bbrev] skipwhite nextgroup=vimMapMod,vimMapLhs
361e37d50a5SBram Moolenaar
362cfbc5ee4SBram Moolenaar" Autocmd {{{2
363071d4279SBram Moolenaar" =======
364071d4279SBram Moolenaarsyn match	vimAutoEventList	contained	"\(!\s\+\)\=\(\a\+,\)*\a\+"	contains=vimAutoEvent nextgroup=vimAutoCmdSpace
365071d4279SBram Moolenaarsyn match	vimAutoCmdSpace	contained	"\s\+"	nextgroup=vimAutoCmdSfxList
366071d4279SBram Moolenaarsyn match	vimAutoCmdSfxList	contained	"\S*"
367071d4279SBram Moolenaarsyn keyword	vimAutoCmd	au[tocmd] do[autocmd] doautoa[ll]	skipwhite nextgroup=vimAutoEventList
368071d4279SBram Moolenaar
369cfbc5ee4SBram Moolenaar" Echo and Execute -- prefer strings! {{{2
370071d4279SBram Moolenaar" ================
3715c73622aSBram Moolenaarsyn region	vimEcho	oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar
3725c73622aSBram Moolenaarsyn region	vimExecute	oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar
373071d4279SBram Moolenaarsyn match	vimEchoHL	"echohl\="	skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
374071d4279SBram Moolenaarsyn case ignore
375071d4279SBram Moolenaarsyn keyword	vimEchoHLNone	none
376071d4279SBram Moolenaarsyn case match
377071d4279SBram Moolenaar
378cfbc5ee4SBram Moolenaar" Maps {{{2
379071d4279SBram Moolenaar" ====
3803577c6faSBram Moolenaarsyn match	vimMap		"\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
3815c73622aSBram Moolenaarsyn 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] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
38281af9250SBram Moolenaarsyn keyword	vimMap		mapc[lear] smapc[lear]
3835c73622aSBram Moolenaarsyn keyword	vimUnmap		cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
384b8a7b560SBram Moolenaarsyn match	vimMapLhs	contained	"\S\+"			contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
385b8a7b560SBram Moolenaarsyn match	vimMapBang	contained	"!"			skipwhite nextgroup=vimMapMod,vimMapLhs
386b4ff518dSBram Moolenaarsyn match	vimMapMod	contained	"\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
387b8a7b560SBram Moolenaarsyn match	vimMapRhs	contained	".*" contains=vimNotation,vimCtrlChar	skipnl nextgroup=vimMapRhsExtend
388b4ff518dSBram Moolenaarsyn match	vimMapRhsExtend	contained	"^\s*\\.*$"			contains=vimContinue
389071d4279SBram Moolenaarsyn case ignore
390b4ff518dSBram Moolenaarsyn keyword	vimMapModKey	contained	buffer	expr	leader	localleader	nowait	plug	script	sid	silent	unique
391071d4279SBram Moolenaarsyn case match
392071d4279SBram Moolenaar
393cfbc5ee4SBram Moolenaar" Menus {{{2
394071d4279SBram Moolenaar" =====
395071d4279SBram Moolenaarsyn cluster	vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
396071d4279SBram Moolenaarsyn 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
397071d4279SBram Moolenaarsyn match	vimMenuName	"[^ \t\\<]\+"	contained nextgroup=vimMenuNameMore,vimMenuMap
398071d4279SBram Moolenaarsyn match	vimMenuPriority	"\d\+\(\.\d\+\)*"	contained skipwhite nextgroup=vimMenuName
399071d4279SBram Moolenaarsyn match	vimMenuNameMore	"\c\\\s\|<tab>\|\\\."	contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
400071d4279SBram Moolenaarsyn match	vimMenuMod    contained	"\c<\(script\|silent\)\+>"  skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
401071d4279SBram Moolenaarsyn match	vimMenuMap	"\s"	contained skipwhite nextgroup=vimMenuRhs
402071d4279SBram Moolenaarsyn match	vimMenuRhs	".*$"	contained contains=vimString,vimComment,vimIsCommand
403071d4279SBram Moolenaarsyn match	vimMenuBang	"!"	contained skipwhite nextgroup=@vimMenuList
404071d4279SBram Moolenaar
405cfbc5ee4SBram Moolenaar" Angle-Bracket Notation (tnx to Michael Geddes) {{{2
406071d4279SBram Moolenaar" ======================
407071d4279SBram Moolenaarsyn case ignore
40883d1b190SBram Moolenaarsyn match	vimNotation	"\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket
409071d4279SBram Moolenaarsyn match	vimNotation	"\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>"	contains=vimBracket
410071d4279SBram Moolenaarsyn match	vimNotation	"\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>"		contains=vimBracket
411071d4279SBram Moolenaarsyn match	vimNotation	'\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1			contains=vimBracket
412d68071d8SBram Moolenaarsyn match	vimNotation	'\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>'	contains=vimBracket
413071d4279SBram Moolenaarsyn match	vimNotation	"\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>"		contains=vimBracket
414071d4279SBram Moolenaarsyn match	vimBracket contained	"[\\<>]"
415071d4279SBram Moolenaarsyn case match
416071d4279SBram Moolenaar
4173577c6faSBram Moolenaar" User Function Highlighting {{{2
4183577c6faSBram Moolenaar" (following Gautam Iyer's suggestion)
419071d4279SBram Moolenaar" ==========================
420a0f849eeSBram Moolenaarsyn match vimFunc		"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("		contains=vimFuncName,vimUserFunc,vimExecute
421a0f849eeSBram Moolenaarsyn match vimUserFunc contained	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>"	contains=vimNotation
4225c73622aSBram Moolenaarsyn match vimNotFunc	"\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>"
423071d4279SBram Moolenaar
4243577c6faSBram Moolenaar" Errors And Warnings: {{{2
4253577c6faSBram Moolenaar" ====================
4266be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
4275c73622aSBram Moolenaar syn match	vimFunctionError	"\s\zs[a-z0-9]\i\{-}\ze\s*("			contained contains=vimFuncKey,vimFuncBlank
4285c73622aSBram Moolenaar" syn match	vimFunctionError	"\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)[0-9]\i\{-}\ze\s*("	contained contains=vimFuncKey,vimFuncBlank
4293577c6faSBram Moolenaar syn match	vimElseIfErr	"\<else\s\+if\>"
4303577c6faSBram Moolenaar syn match	vimBufnrWarn	/\<bufnr\s*(\s*["']\.['"]\s*)/
4313577c6faSBram Moolenaarendif
4323577c6faSBram Moolenaar
4333577c6faSBram Moolenaar" Norm {{{2
43405159a0cSBram Moolenaar" ====
43505159a0cSBram Moolenaarsyn match	vimNorm		"\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
43605159a0cSBram Moolenaarsyn match	vimNormCmds contained	".*$"
43705159a0cSBram Moolenaar
438cfbc5ee4SBram Moolenaar" Syntax {{{2
439071d4279SBram Moolenaar"=======
440071d4279SBram Moolenaarsyn match	vimGroupList	contained	"@\=[^ \t,]*"	contains=vimGroupSpecial,vimPatSep
441071d4279SBram Moolenaarsyn match	vimGroupList	contained	"@\=[^ \t,]*,"	nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
4425c73622aSBram Moolenaarsyn keyword	vimGroupSpecial	contained	ALL	ALLBUT	CONTAINED	TOP
4436be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
444071d4279SBram Moolenaar syn match	vimSynError	contained	"\i\+"
445071d4279SBram Moolenaar syn match	vimSynError	contained	"\i\+="	nextgroup=vimGroupList
446cfbc5ee4SBram Moolenaarendif
447071d4279SBram Moolenaarsyn match	vimSynContains	contained	"\<contain\(s\|edin\)="	nextgroup=vimGroupList
448071d4279SBram Moolenaarsyn match	vimSynKeyContainedin	contained	"\<containedin="	nextgroup=vimGroupList
449071d4279SBram Moolenaarsyn match	vimSynNextgroup	contained	"nextgroup="	nextgroup=vimGroupList
450071d4279SBram Moolenaar
451071d4279SBram Moolenaarsyn match	vimSyntax	"\<sy\%[ntax]\>"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
452071d4279SBram Moolenaarsyn match	vimAuSyntax	contained	"\s+sy\%[ntax]"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
453d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSyntax
454071d4279SBram Moolenaar
455cfbc5ee4SBram Moolenaar" Syntax: case {{{2
456071d4279SBram Moolenaarsyn keyword	vimSynType	contained	case	skipwhite nextgroup=vimSynCase,vimSynCaseError
4576be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
458071d4279SBram Moolenaar syn match	vimSynCaseError	contained	"\i\+"
459cfbc5ee4SBram Moolenaarendif
460071d4279SBram Moolenaarsyn keyword	vimSynCase	contained	ignore	match
461071d4279SBram Moolenaar
462cfbc5ee4SBram Moolenaar" Syntax: clear {{{2
463071d4279SBram Moolenaarsyn keyword	vimSynType	contained	clear	skipwhite nextgroup=vimGroupList
464071d4279SBram Moolenaar
465cfbc5ee4SBram Moolenaar" Syntax: cluster {{{2
466071d4279SBram Moolenaarsyn keyword	vimSynType	contained	cluster	skipwhite nextgroup=vimClusterName
467a0f849eeSBram Moolenaarsyn region	vimClusterName	contained	matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
468071d4279SBram Moolenaarsyn match	vimGroupAdd	contained	"add="	nextgroup=vimGroupList
469071d4279SBram Moolenaarsyn match	vimGroupRem	contained	"remove="	nextgroup=vimGroupList
470d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSynType,vimGroupAdd,vimGroupRem
471071d4279SBram Moolenaar
472*13d5aeefSBram Moolenaar" Syntax: iskeyword {{{2
473*13d5aeefSBram Moolenaarsyn keyword	vimSynType	contained	iskeyword	skipwhite nextgroup=vimIskList
474*13d5aeefSBram Moolenaarsyn match	vimIskList	contained	'\S\+'	contains=vimIskSep
475*13d5aeefSBram Moolenaarsyn match	vimIskSep	contained	','
476*13d5aeefSBram Moolenaar
477cfbc5ee4SBram Moolenaar" Syntax: include {{{2
478071d4279SBram Moolenaarsyn keyword	vimSynType	contained	include	skipwhite nextgroup=vimGroupList
479d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSynType
480071d4279SBram Moolenaar
481cfbc5ee4SBram Moolenaar" Syntax: keyword {{{2
482071d4279SBram Moolenaarsyn cluster	vimSynKeyGroup	contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
483071d4279SBram Moolenaarsyn keyword	vimSynType	contained	keyword	skipwhite nextgroup=vimSynKeyRegion
484a0f849eeSBram Moolenaarsyn region	vimSynKeyRegion	contained oneline keepend	matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
485071d4279SBram Moolenaarsyn match	vimSynKeyOpt	contained	"\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
486d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSynType
487071d4279SBram Moolenaar
488cfbc5ee4SBram Moolenaar" Syntax: match {{{2
489071d4279SBram Moolenaarsyn cluster	vimSynMtchGroup	contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
490071d4279SBram Moolenaarsyn keyword	vimSynType	contained	match	skipwhite nextgroup=vimSynMatchRegion
491a0f849eeSBram Moolenaarsyn region	vimSynMatchRegion	contained keepend	matchgroup=vimGroupName start="\h\w*" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
492071d4279SBram Moolenaarsyn match	vimSynMtchOpt	contained	"\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
493071d4279SBram Moolenaarif has("conceal")
49483d1b190SBram Moolenaar syn match	vimSynMtchOpt	contained	"\<cchar="	nextgroup=vimSynMtchCchar
4955c73622aSBram Moolenaar syn match	vimSynMtchCchar	contained	"\S"
496071d4279SBram Moolenaarendif
497d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSynMtchGroup
498071d4279SBram Moolenaar
499cfbc5ee4SBram Moolenaar" Syntax: off and on {{{2
500071d4279SBram Moolenaarsyn keyword	vimSynType	contained	enable	list	manual	off	on	reset
501071d4279SBram Moolenaar
502cfbc5ee4SBram Moolenaar" Syntax: region {{{2
503071d4279SBram Moolenaarsyn cluster	vimSynRegPatGroup	contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
504071d4279SBram Moolenaarsyn cluster	vimSynRegGroup	contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
505071d4279SBram Moolenaarsyn keyword	vimSynType	contained	region	skipwhite nextgroup=vimSynRegion
506a0f849eeSBram Moolenaarsyn region	vimSynRegion	contained keepend	matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
507071d4279SBram Moolenaarsyn match	vimSynRegOpt	contained	"\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
508071d4279SBram Moolenaarsyn match	vimSynReg	contained	"\(start\|skip\|end\)="he=e-1	nextgroup=vimSynRegPat
509071d4279SBram Moolenaarsyn match	vimSynMtchGrp	contained	"matchgroup="	nextgroup=vimGroup,vimHLGroup
510071d4279SBram Moolenaarsyn region	vimSynRegPat	contained extend	start="\z([-`~!@#$%^&*_=+;:'",./?]\)"  skip="\\\\\|\\\z1"  end="\z1"  contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
511071d4279SBram Moolenaarsyn match	vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
512071d4279SBram Moolenaarsyn match	vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
513071d4279SBram Moolenaarsyn match	vimSynPatMod	contained	"lc=\d\+"
514071d4279SBram Moolenaarsyn match	vimSynPatMod	contained	"lc=\d\+," nextgroup=vimSynPatMod
515071d4279SBram Moolenaarsyn region	vimSynPatRange	contained	start="\["	skip="\\\\\|\\]"   end="]"
516071d4279SBram Moolenaarsyn match	vimSynNotPatRange	contained	"\\\\\|\\\["
517071d4279SBram Moolenaarsyn match	vimMtchComment	contained	'"[^"]\+$'
518d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSynType
519071d4279SBram Moolenaar
520cfbc5ee4SBram Moolenaar" Syntax: sync {{{2
521071d4279SBram Moolenaar" ============
522df177f67SBram Moolenaarsyn keyword vimSynType	contained	sync	skipwhite	nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
5236be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
524071d4279SBram Moolenaar syn match	vimSyncError	contained	"\i\+"
525cfbc5ee4SBram Moolenaarendif
526071d4279SBram Moolenaarsyn keyword	vimSyncC	contained	ccomment	clear	fromstart
527071d4279SBram Moolenaarsyn keyword	vimSyncMatch	contained	match	skipwhite	nextgroup=vimSyncGroupName
528071d4279SBram Moolenaarsyn keyword	vimSyncRegion	contained	region	skipwhite	nextgroup=vimSynReg
529df177f67SBram Moolenaarsyn match	vimSyncLinebreak	contained	"\<linebreaks="	skipwhite	nextgroup=vimNumber
530071d4279SBram Moolenaarsyn keyword	vimSyncLinecont	contained	linecont	skipwhite	nextgroup=vimSynRegPat
531071d4279SBram Moolenaarsyn match	vimSyncLines	contained	"\(min\|max\)\=lines="	nextgroup=vimNumber
532a0f849eeSBram Moolenaarsyn match	vimSyncGroupName	contained	"\h\w*"	skipwhite	nextgroup=vimSyncKey
533071d4279SBram Moolenaarsyn match	vimSyncKey	contained	"\<groupthere\|grouphere\>"	skipwhite nextgroup=vimSyncGroup
534a0f849eeSBram Moolenaarsyn match	vimSyncGroup	contained	"\h\w*"	skipwhite	nextgroup=vimSynRegPat,vimSyncNone
535071d4279SBram Moolenaarsyn keyword	vimSyncNone	contained	NONE
536071d4279SBram Moolenaar
537cfbc5ee4SBram Moolenaar" Additional IsCommand, here by reasons of precedence {{{2
538071d4279SBram Moolenaar" ====================
539071d4279SBram Moolenaarsyn match	vimIsCommand	"<Bar>\s*\a\+"	transparent contains=vimCommand,vimNotation
540071d4279SBram Moolenaar
541cfbc5ee4SBram Moolenaar" Highlighting {{{2
542071d4279SBram Moolenaar" ============
543071d4279SBram Moolenaarsyn cluster	vimHighlightCluster		contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
5446be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
5456be7f873SBram Moolenaar syn match	vimHiCtermError	contained	"[^0-9]\i*"
5466be7f873SBram Moolenaarendif
547071d4279SBram Moolenaarsyn match	vimHighlight	"\<hi\%[ghlight]\>"	skipwhite nextgroup=vimHiBang,@vimHighlightCluster
548071d4279SBram Moolenaarsyn match	vimHiBang	contained	"!"	skipwhite nextgroup=@vimHighlightCluster
549071d4279SBram Moolenaar
550071d4279SBram Moolenaarsyn match	vimHiGroup	contained	"\i\+"
551071d4279SBram Moolenaarsyn case ignore
5524770d09aSBram Moolenaarsyn keyword	vimHiAttrib	contained	none bold inverse italic reverse standout underline undercurl
553071d4279SBram Moolenaarsyn keyword	vimFgBgAttrib	contained	none bg background fg foreground
554071d4279SBram Moolenaarsyn case match
555071d4279SBram Moolenaarsyn match	vimHiAttribList	contained	"\i\+"	contains=vimHiAttrib
556071d4279SBram Moolenaarsyn match	vimHiAttribList	contained	"\i\+,"he=e-1	contains=vimHiAttrib nextgroup=vimHiAttribList
557071d4279SBram Moolenaarsyn case ignore
5586be7f873SBram Moolenaarsyn keyword	vimHiCtermColor	contained	black blue brown cyan darkblue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow
5596be7f873SBram Moolenaarsyn match	vimHiCtermColor	contained	"\<color\d\{1,3}\>"
560071d4279SBram Moolenaar
561071d4279SBram Moolenaarsyn case match
562071d4279SBram Moolenaarsyn match	vimHiFontname	contained	"[a-zA-Z\-*]\+"
563071d4279SBram Moolenaarsyn match	vimHiGuiFontname	contained	"'[a-zA-Z\-* ]\+'"
564071d4279SBram Moolenaarsyn match	vimHiGuiRgb	contained	"#\x\{6}"
565071d4279SBram Moolenaar
566cfbc5ee4SBram Moolenaar" Highlighting: hi group key=arg ... {{{2
5675c73622aSBram Moolenaarsyn cluster	vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
568071d4279SBram Moolenaarsyn region	vimHiKeyList	contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||"	contains=@vimHiCluster
5696be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
570071d4279SBram Moolenaar syn match	vimHiKeyError	contained	"\i\+="he=e-1
571cfbc5ee4SBram Moolenaarendif
572071d4279SBram Moolenaarsyn match	vimHiTerm	contained	"\cterm="he=e-1		nextgroup=vimHiAttribList
573071d4279SBram Moolenaarsyn match	vimHiStartStop	contained	"\c\(start\|stop\)="he=e-1	nextgroup=vimHiTermcap,vimOption
574071d4279SBram Moolenaarsyn match	vimHiCTerm	contained	"\ccterm="he=e-1		nextgroup=vimHiAttribList
57583d1b190SBram Moolenaarsyn match	vimHiCtermFgBg	contained	"\ccterm[fb]g="he=e-1	nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
576071d4279SBram Moolenaarsyn match	vimHiGui	contained	"\cgui="he=e-1		nextgroup=vimHiAttribList
577071d4279SBram Moolenaarsyn match	vimHiGuiFont	contained	"\cfont="he=e-1		nextgroup=vimHiFontname
5784770d09aSBram Moolenaarsyn match	vimHiGuiFgBg	contained	"\cgui\%([fb]g\|sp\)="he=e-1	nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
579071d4279SBram Moolenaarsyn match	vimHiTermcap	contained	"\S\+"		contains=vimNotation
58083d1b190SBram Moolenaarsyn match	vimHiNmbr	contained	'\d\+'
581071d4279SBram Moolenaar
582cfbc5ee4SBram Moolenaar" Highlight: clear {{{2
583071d4279SBram Moolenaarsyn keyword	vimHiClear	contained	clear	nextgroup=vimHiGroup
584071d4279SBram Moolenaar
585cfbc5ee4SBram Moolenaar" Highlight: link {{{2
58683d1b190SBram Moolenaarsyn region	vimHiLink	contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$"	contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
587d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimHiLink
588071d4279SBram Moolenaar
589cfbc5ee4SBram Moolenaar" Control Characters {{{2
590071d4279SBram Moolenaar" ==================
591071d4279SBram Moolenaarsyn match	vimCtrlChar	"[--]"
592071d4279SBram Moolenaar
593cfbc5ee4SBram Moolenaar" Beginners - Patterns that involve ^ {{{2
594071d4279SBram Moolenaar" =========
595071d4279SBram Moolenaarsyn match	vimLineComment	+^[ \t:]*".*$+	contains=@vimCommentGroup,vimCommentString,vimCommentTitle
596ff1d0d4cSBram Moolenaarsyn match	vimCommentTitle	'"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
597071d4279SBram Moolenaarsyn match	vimContinue	"^\s*\\"
598071d4279SBram Moolenaarsyn region	vimString	start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
599071d4279SBram Moolenaarsyn match	vimCommentTitleLeader	'"\s\+'ms=s+1	contained
600071d4279SBram Moolenaar
60118144c84SBram Moolenaar" Searches And Globals: {{{2
60218144c84SBram Moolenaar" ====================
603e2f98b95SBram Moolenaarsyn match	vimSearch	'^\s*[/?].*'		contains=vimSearchDelim
604e2f98b95SBram Moolenaarsyn match	vimSearchDelim	'^\s*\zs[/?]\|[/?]$'	contained
6059da7ff70SBram Moolenaarsyn region	vimGlobal	matchgroup=Statement start='\<g\%[lobal]!\=/'  skip='\\.' end='/'	skipwhite nextgroup=vimSubst
6069da7ff70SBram Moolenaarsyn region	vimGlobal	matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/'	skipwhite nextgroup=vimSubst
607e2f98b95SBram Moolenaar
608cfbc5ee4SBram Moolenaar" Scripts  : perl,ruby : Benoit Cerrina {{{2
609071d4279SBram Moolenaar" =======    python,tcl: Johannes Zellner
6104b22cdb0SBram Moolenaar"            lua
611071d4279SBram Moolenaar
6123577c6faSBram Moolenaar" Allows users to specify the type of embedded script highlighting
6133577c6faSBram Moolenaar" they want:  (perl/python/ruby/tcl support)
6143577c6faSBram Moolenaar"   g:vimsyn_embed == 0   : don't embed any scripts
615b4ff518dSBram Moolenaar"   g:vimsyn_embed =~ 'l' : embed lua      (but only if vim supports it)
616b4ff518dSBram Moolenaar"   g:vimsyn_embed =~ 'm' : embed mzscheme (but only if vim supports it)
617b4ff518dSBram Moolenaar"   g:vimsyn_embed =~ 'p' : embed perl     (but only if vim supports it)
618b4ff518dSBram Moolenaar"   g:vimsyn_embed =~ 'P' : embed python   (but only if vim supports it)
619b4ff518dSBram Moolenaar"   g:vimsyn_embed =~ 'r' : embed ruby     (but only if vim supports it)
620b4ff518dSBram Moolenaar"   g:vimsyn_embed =~ 't' : embed tcl      (but only if vim supports it)
6217cba6c06SBram Moolenaarif !exists("g:vimsyn_embed")
622a0f849eeSBram Moolenaar let g:vimsyn_embed= "lmpPr"
6237cba6c06SBram Moolenaarendif
624071d4279SBram Moolenaar
6254b22cdb0SBram Moolenaar" [-- lua --] {{{3
626adc2182cSBram Moolenaarlet s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
6274b22cdb0SBram Moolenaarif !filereadable(s:luapath)
628a0f849eeSBram Moolenaar for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
629a0f849eeSBram Moolenaar  if filereadable(fnameescape(s:luapath))
630a0f849eeSBram Moolenaar   let s:luapath= fnameescape(s:luapath)
6319da7ff70SBram Moolenaar   break
6329da7ff70SBram Moolenaar  endif
6339da7ff70SBram Moolenaar endfor
6344b22cdb0SBram Moolenaarendif
635a0f849eeSBram Moolenaarif (g:vimsyn_embed =~ 'l' && has("lua")) && filereadable(s:luapath)
6364b22cdb0SBram Moolenaar unlet! b:current_syntax
6374b22cdb0SBram Moolenaar exe "syn include @vimLuaScript ".s:luapath
638a0f849eeSBram Moolenaar VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimLuaScript
639a0f849eeSBram Moolenaar VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+		contains=@vimLuaScript
6404b22cdb0SBram Moolenaar syn cluster vimFuncBodyList	add=vimLuaRegion
6414b22cdb0SBram Moolenaarelse
6424b22cdb0SBram Moolenaar syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
6434b22cdb0SBram Moolenaar syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
6444b22cdb0SBram Moolenaarendif
6454b22cdb0SBram Moolenaarunlet s:luapath
6464b22cdb0SBram Moolenaar
647cfbc5ee4SBram Moolenaar" [-- perl --] {{{3
648adc2182cSBram Moolenaarlet s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
6495c73622aSBram Moolenaarif !filereadable(s:perlpath)
650a0f849eeSBram Moolenaar for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
651a0f849eeSBram Moolenaar  if filereadable(fnameescape(s:perlpath))
652a0f849eeSBram Moolenaar   let s:perlpath= fnameescape(s:perlpath)
6539da7ff70SBram Moolenaar   break
6549da7ff70SBram Moolenaar  endif
6559da7ff70SBram Moolenaar endfor
6565c73622aSBram Moolenaarendif
657a0f849eeSBram Moolenaarif (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(s:perlpath)
658071d4279SBram Moolenaar unlet! b:current_syntax
6595c73622aSBram Moolenaar exe "syn include @vimPerlScript ".s:perlpath
660a0f849eeSBram Moolenaar VimFoldp syn region vimPerlRegion  matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPerlScript
661a0f849eeSBram Moolenaar VimFoldp syn region vimPerlRegion	matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+	contains=@vimPerlScript
6625c73622aSBram Moolenaar syn cluster vimFuncBodyList	add=vimPerlRegion
663c236c16dSBram Moolenaarelse
664c236c16dSBram Moolenaar syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
665c236c16dSBram Moolenaar syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
6663577c6faSBram Moolenaarendif
6675c73622aSBram Moolenaarunlet s:perlpath
668071d4279SBram Moolenaar
669cfbc5ee4SBram Moolenaar" [-- ruby --] {{{3
670adc2182cSBram Moolenaarlet s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
6715c73622aSBram Moolenaarif !filereadable(s:rubypath)
672a0f849eeSBram Moolenaar for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
673a0f849eeSBram Moolenaar  if filereadable(fnameescape(s:rubypath))
674a0f849eeSBram Moolenaar   let s:rubypath= fnameescape(s:rubypath)
6759da7ff70SBram Moolenaar   break
6769da7ff70SBram Moolenaar  endif
6779da7ff70SBram Moolenaar endfor
6785c73622aSBram Moolenaarendif
679a0f849eeSBram Moolenaarif (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(s:rubypath)
680071d4279SBram Moolenaar unlet! b:current_syntax
6815c73622aSBram Moolenaar exe "syn include @vimRubyScript ".s:rubypath
682a0f849eeSBram Moolenaar VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimRubyScript
683071d4279SBram Moolenaar syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+		contains=@vimRubyScript
6845c73622aSBram Moolenaar syn cluster vimFuncBodyList	add=vimRubyRegion
685c236c16dSBram Moolenaarelse
686c236c16dSBram Moolenaar syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
687c236c16dSBram Moolenaar syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
688071d4279SBram Moolenaarendif
6895c73622aSBram Moolenaarunlet s:rubypath
690071d4279SBram Moolenaar
691cfbc5ee4SBram Moolenaar" [-- python --] {{{3
692adc2182cSBram Moolenaarlet s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
6935c73622aSBram Moolenaarif !filereadable(s:pythonpath)
694a0f849eeSBram Moolenaar for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
695a0f849eeSBram Moolenaar  if filereadable(fnameescape(s:pythonpath))
696a0f849eeSBram Moolenaar   let s:pythonpath= fnameescape(s:pythonpath)
6979da7ff70SBram Moolenaar   break
6985c73622aSBram Moolenaar  endif
6999da7ff70SBram Moolenaar endfor
7009da7ff70SBram Moolenaarendif
7019da7ff70SBram Moolenaarif g:vimsyn_embed =~ 'P' && (has("python") || has("python3")) && filereadable(s:pythonpath)
702071d4279SBram Moolenaar unlet! b:current_syntax
7035c73622aSBram Moolenaar exe "syn include @vimPythonScript ".s:pythonpath
704a0f849eeSBram Moolenaar VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPythonScript
705a0f849eeSBram Moolenaar VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+		contains=@vimPythonScript
706b4ff518dSBram Moolenaar VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\z(.*\)$+ end=+^\z1$+		contains=@vimPythonScript
707b4ff518dSBram Moolenaar VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+		contains=@vimPythonScript
7085c73622aSBram Moolenaar syn cluster vimFuncBodyList	add=vimPythonRegion
709c236c16dSBram Moolenaarelse
710fa01c39dSBram Moolenaar syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
711fa01c39dSBram Moolenaar syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
7123577c6faSBram Moolenaarendif
7135c73622aSBram Moolenaarunlet s:pythonpath
714071d4279SBram Moolenaar
715cfbc5ee4SBram Moolenaar" [-- tcl --] {{{3
716a0f849eeSBram Moolenaarif has("win32") || has("win95") || has("win64") || has("win16")
717a0f849eeSBram Moolenaar " apparently has("tcl") has been hanging vim on some windows systems with cygwin
718a0f849eeSBram Moolenaar let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
719a0f849eeSBram Moolenaarelse
720a0f849eeSBram Moolenaar let s:trytcl= 1
721a0f849eeSBram Moolenaarendif
722a6878375SBram Moolenaarif s:trytcl
723adc2182cSBram Moolenaar let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
7245c73622aSBram Moolenaar if !filereadable(s:tclpath)
725a0f849eeSBram Moolenaar  for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
726a0f849eeSBram Moolenaar   if filereadable(fnameescape(s:tclpath))
727a0f849eeSBram Moolenaar    let s:tclpath= fnameescape(s:tclpath)
7289da7ff70SBram Moolenaar    break
7299da7ff70SBram Moolenaar   endif
7309da7ff70SBram Moolenaar  endfor
7315c73622aSBram Moolenaar endif
732a6878375SBram Moolenaar if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(s:tclpath)
733071d4279SBram Moolenaar  unlet! b:current_syntax
7345c73622aSBram Moolenaar  exe "syn include @vimTclScript ".s:tclpath
735a0f849eeSBram Moolenaar  VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimTclScript
736a0f849eeSBram Moolenaar  VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+	contains=@vimTclScript
7375c73622aSBram Moolenaar  syn cluster vimFuncBodyList	add=vimTclScript
738c236c16dSBram Moolenaar else
739c236c16dSBram Moolenaar  syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
740c236c16dSBram Moolenaar  syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
7413577c6faSBram Moolenaar endif
7425c73622aSBram Moolenaar unlet s:tclpath
743a6878375SBram Moolenaarelse
744a6878375SBram Moolenaar syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
745a6878375SBram Moolenaar syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
746a6878375SBram Moolenaarendif
747a6878375SBram Moolenaarunlet s:trytcl
748071d4279SBram Moolenaar
7498299df96SBram Moolenaar" [-- mzscheme --] {{{3
750adc2182cSBram Moolenaarlet s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
7515c73622aSBram Moolenaarif !filereadable(s:mzschemepath)
752a0f849eeSBram Moolenaar for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
753a0f849eeSBram Moolenaar  if filereadable(fnameescape(s:mzschemepath))
754a0f849eeSBram Moolenaar   let s:mzschemepath= fnameescape(s:mzschemepath)
7559da7ff70SBram Moolenaar   break
7569da7ff70SBram Moolenaar  endif
7579da7ff70SBram Moolenaar endfor
7585c73622aSBram Moolenaarendif
7595c73622aSBram Moolenaarif (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
7608299df96SBram Moolenaar unlet! b:current_syntax
7618299df96SBram Moolenaar let iskKeep= &isk
7625c73622aSBram Moolenaar exe "syn include @vimMzSchemeScript ".s:mzschemepath
7638299df96SBram Moolenaar let &isk= iskKeep
764a0f849eeSBram Moolenaar VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimMzSchemeScript
765a0f849eeSBram Moolenaar VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+		contains=@vimMzSchemeScript
7665c73622aSBram Moolenaar syn cluster vimFuncBodyList	add=vimMzSchemeRegion
767c236c16dSBram Moolenaarelse
768c236c16dSBram Moolenaar syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
769c236c16dSBram Moolenaar syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
7703577c6faSBram Moolenaarendif
7715c73622aSBram Moolenaarunlet s:mzschemepath
7728299df96SBram Moolenaar
773cfbc5ee4SBram Moolenaar" Synchronize (speed) {{{2
774071d4279SBram Moolenaar"============
7753577c6faSBram Moolenaarif exists("g:vimsyn_minlines")
7763577c6faSBram Moolenaar exe "syn sync minlines=".g:vimsyn_minlines
777071d4279SBram Moolenaarendif
7783577c6faSBram Moolenaarif exists("g:vimsyn_maxlines")
7793577c6faSBram Moolenaar exe "syn sync maxlines=".g:vimsyn_maxlines
780071d4279SBram Moolenaarelse
781071d4279SBram Moolenaar syn sync maxlines=60
782071d4279SBram Moolenaarendif
783071d4279SBram Moolenaarsyn sync linecont	"^\s\+\\"
784071d4279SBram Moolenaarsyn sync match vimAugroupSyncA	groupthere NONE	"\<aug\%[roup]\>\s\+[eE][nN][dD]"
785071d4279SBram Moolenaar
7865c73622aSBram Moolenaar" ====================
787cfbc5ee4SBram Moolenaar" Highlighting Settings {{{2
788071d4279SBram Moolenaar" ====================
789071d4279SBram Moolenaar
7903577c6faSBram Moolenaarif !exists("g:vimsyn_noerror")
791cfbc5ee4SBram Moolenaar hi def link vimBehaveError	vimError
792cfbc5ee4SBram Moolenaar hi def link vimCollClassErr	vimError
793cfbc5ee4SBram Moolenaar hi def link vimErrSetting	vimError
794c236c16dSBram Moolenaar hi def link vimEmbedError	vimError
795cfbc5ee4SBram Moolenaar hi def link vimFTError	vimError
796cfbc5ee4SBram Moolenaar hi def link vimFunctionError	vimError
7978299df96SBram Moolenaar hi def link vimFunc         	vimError
798cfbc5ee4SBram Moolenaar hi def link vimHiAttribList	vimError
799cfbc5ee4SBram Moolenaar hi def link vimHiCtermError	vimError
800cfbc5ee4SBram Moolenaar hi def link vimHiKeyError	vimError
801cfbc5ee4SBram Moolenaar hi def link vimKeyCodeError	vimError
802cfbc5ee4SBram Moolenaar hi def link vimMapModErr	vimError
803cfbc5ee4SBram Moolenaar hi def link vimSubstFlagErr	vimError
804cfbc5ee4SBram Moolenaar hi def link vimSynCaseError	vimError
8053577c6faSBram Moolenaar hi def link vimBufnrWarn	vimWarn
806cfbc5ee4SBram Moolenaarendif
807cfbc5ee4SBram Moolenaar
808e37d50a5SBram Moolenaarhi def link vimAbb	vimCommand
809cfbc5ee4SBram Moolenaarhi def link vimAddress	vimMark
810a0f849eeSBram Moolenaarhi def link vimAugroupError	vimError
811071d4279SBram Moolenaarhi def link vimAugroupKey	vimCommand
81283d1b190SBram Moolenaarhi def link vimAuHighlight	vimHighlight
813071d4279SBram Moolenaarhi def link vimAutoCmdOpt	vimOption
814071d4279SBram Moolenaarhi def link vimAutoCmd	vimCommand
81583d1b190SBram Moolenaarhi def link vimAutoEvent	Type
816071d4279SBram Moolenaarhi def link vimAutoSet	vimCommand
81783d1b190SBram Moolenaarhi def link vimBehaveModel	vimBehave
818071d4279SBram Moolenaarhi def link vimBehave	vimCommand
81983d1b190SBram Moolenaarhi def link vimBracket	Delimiter
82083d1b190SBram Moolenaarhi def link vimCmplxRepeat	SpecialChar
82183d1b190SBram Moolenaarhi def link vimCommand	Statement
82283d1b190SBram Moolenaarhi def link vimComment	Comment
823071d4279SBram Moolenaarhi def link vimCommentString	vimString
82483d1b190SBram Moolenaarhi def link vimCommentTitle	PreProc
825071d4279SBram Moolenaarhi def link vimCondHL	vimCommand
82683d1b190SBram Moolenaarhi def link vimContinue	Special
82783d1b190SBram Moolenaarhi def link vimCtrlChar	SpecialChar
828071d4279SBram Moolenaarhi def link vimEchoHLNone	vimGroup
829071d4279SBram Moolenaarhi def link vimEchoHL	vimCommand
83083d1b190SBram Moolenaarhi def link vimElseIfErr	Error
831071d4279SBram Moolenaarhi def link vimElseif	vimCondHL
83283d1b190SBram Moolenaarhi def link vimEnvvar	PreProc
83383d1b190SBram Moolenaarhi def link vimError	Error
83483d1b190SBram Moolenaarhi def link vimFBVar	vimVar
835071d4279SBram Moolenaarhi def link vimFgBgAttrib	vimHiAttrib
83683d1b190SBram Moolenaarhi def link vimFold	Folded
837071d4279SBram Moolenaarhi def link vimFTCmd	vimCommand
838071d4279SBram Moolenaarhi def link vimFTOption	vimSynType
839071d4279SBram Moolenaarhi def link vimFuncKey	vimCommand
84083d1b190SBram Moolenaarhi def link vimFuncName	Function
84183d1b190SBram Moolenaarhi def link vimFuncSID	Special
84283d1b190SBram Moolenaarhi def link vimFuncVar	Identifier
843071d4279SBram Moolenaarhi def link vimGroupAdd	vimSynOption
8446be7f873SBram Moolenaarhi def link vimGroupName	vimGroup
845071d4279SBram Moolenaarhi def link vimGroupRem	vimSynOption
84683d1b190SBram Moolenaarhi def link vimGroupSpecial	Special
84783d1b190SBram Moolenaarhi def link vimGroup	Type
84883d1b190SBram Moolenaarhi def link vimHiAttrib	PreProc
8496be7f873SBram Moolenaarhi def link vimHiClear	vimHighlight
850071d4279SBram Moolenaarhi def link vimHiCtermFgBg	vimHiTerm
851071d4279SBram Moolenaarhi def link vimHiCTerm	vimHiTerm
852071d4279SBram Moolenaarhi def link vimHighlight	vimCommand
853071d4279SBram Moolenaarhi def link vimHiGroup	vimGroupName
854071d4279SBram Moolenaarhi def link vimHiGuiFgBg	vimHiTerm
855071d4279SBram Moolenaarhi def link vimHiGuiFont	vimHiTerm
856071d4279SBram Moolenaarhi def link vimHiGuiRgb	vimNumber
857071d4279SBram Moolenaarhi def link vimHiGui	vimHiTerm
85883d1b190SBram Moolenaarhi def link vimHiNmbr	Number
859071d4279SBram Moolenaarhi def link vimHiStartStop	vimHiTerm
86083d1b190SBram Moolenaarhi def link vimHiTerm	Type
861071d4279SBram Moolenaarhi def link vimHLGroup	vimGroup
86283d1b190SBram Moolenaarhi def link vimHLMod	PreProc
863071d4279SBram Moolenaarhi def link vimInsert	vimString
864*13d5aeefSBram Moolenaarhi def link vimIskSep	Delimiter
865071d4279SBram Moolenaarhi def link vimKeyCode	vimSpecFile
86683d1b190SBram Moolenaarhi def link vimKeyword	Statement
867071d4279SBram Moolenaarhi def link vimLet	vimCommand
868071d4279SBram Moolenaarhi def link vimLineComment	vimComment
869071d4279SBram Moolenaarhi def link vimMapBang	vimCommand
870071d4279SBram Moolenaarhi def link vimMapModKey	vimFuncSID
871071d4279SBram Moolenaarhi def link vimMapMod	vimBracket
872071d4279SBram Moolenaarhi def link vimMap	vimCommand
87383d1b190SBram Moolenaarhi def link vimMark	Number
874071d4279SBram Moolenaarhi def link vimMarkNumber	vimNumber
875071d4279SBram Moolenaarhi def link vimMenuMod	vimMapMod
876071d4279SBram Moolenaarhi def link vimMenuNameMore	vimMenuName
87783d1b190SBram Moolenaarhi def link vimMenuName	PreProc
878071d4279SBram Moolenaarhi def link vimMtchComment	vimComment
87905159a0cSBram Moolenaarhi def link vimNorm	vimCommand
88083d1b190SBram Moolenaarhi def link vimNotation	Special
8815c73622aSBram Moolenaarhi def link vimNotFunc	vimCommand
882071d4279SBram Moolenaarhi def link vimNotPatSep	vimString
88383d1b190SBram Moolenaarhi def link vimNumber	Number
88483d1b190SBram Moolenaarhi def link vimOperError	Error
88583d1b190SBram Moolenaarhi def link vimOper	Operator
88683d1b190SBram Moolenaarhi def link vimOption	PreProc
88783d1b190SBram Moolenaarhi def link vimParenSep	Delimiter
888071d4279SBram Moolenaarhi def link vimPatSepErr	vimPatSep
8895c73622aSBram Moolenaarhi def link vimPatSepR	vimPatSep
89083d1b190SBram Moolenaarhi def link vimPatSep	SpecialChar
891071d4279SBram Moolenaarhi def link vimPatSepZone	vimString
8925c73622aSBram Moolenaarhi def link vimPatSepZ	vimPatSep
89383d1b190SBram Moolenaarhi def link vimPattern	Type
894071d4279SBram Moolenaarhi def link vimPlainMark	vimMark
895071d4279SBram Moolenaarhi def link vimPlainRegister	vimRegister
89683d1b190SBram Moolenaarhi def link vimRegister	SpecialChar
89783d1b190SBram Moolenaarhi def link vimScriptDelim	Comment
89883d1b190SBram Moolenaarhi def link vimSearchDelim	Statement
899e2f98b95SBram Moolenaarhi def link vimSearch	vimString
90083d1b190SBram Moolenaarhi def link vimSep	Delimiter
901071d4279SBram Moolenaarhi def link vimSetMod	vimOption
90283d1b190SBram Moolenaarhi def link vimSetSep	Statement
903071d4279SBram Moolenaarhi def link vimSetString	vimString
90483d1b190SBram Moolenaarhi def link vimSpecFile	Identifier
905071d4279SBram Moolenaarhi def link vimSpecFileMod	vimSpecFile
90683d1b190SBram Moolenaarhi def link vimSpecial	Type
90783d1b190SBram Moolenaarhi def link vimStatement	Statement
908071d4279SBram Moolenaarhi def link vimStringCont	vimString
90983d1b190SBram Moolenaarhi def link vimString	String
91083d1b190SBram Moolenaarhi def link vimSubst1	vimSubst
91183d1b190SBram Moolenaarhi def link vimSubstDelim	Delimiter
91283d1b190SBram Moolenaarhi def link vimSubstFlags	Special
91383d1b190SBram Moolenaarhi def link vimSubstSubstr	SpecialChar
914071d4279SBram Moolenaarhi def link vimSubstTwoBS	vimString
915071d4279SBram Moolenaarhi def link vimSubst	vimCommand
91683d1b190SBram Moolenaarhi def link vimSynCaseError	Error
91783d1b190SBram Moolenaarhi def link vimSynCase	Type
91883d1b190SBram Moolenaarhi def link vimSyncC	Type
91983d1b190SBram Moolenaarhi def link vimSyncError	Error
920071d4279SBram Moolenaarhi def link vimSyncGroupName	vimGroupName
921071d4279SBram Moolenaarhi def link vimSyncGroup	vimGroupName
92283d1b190SBram Moolenaarhi def link vimSyncKey	Type
92383d1b190SBram Moolenaarhi def link vimSyncNone	Type
924071d4279SBram Moolenaarhi def link vimSynContains	vimSynOption
92583d1b190SBram Moolenaarhi def link vimSynError	Error
926071d4279SBram Moolenaarhi def link vimSynKeyContainedin	vimSynContains
927071d4279SBram Moolenaarhi def link vimSynKeyOpt	vimSynOption
928071d4279SBram Moolenaarhi def link vimSynMtchGrp	vimSynOption
929071d4279SBram Moolenaarhi def link vimSynMtchOpt	vimSynOption
930071d4279SBram Moolenaarhi def link vimSynNextgroup	vimSynOption
931071d4279SBram Moolenaarhi def link vimSynNotPatRange	vimSynRegPat
93283d1b190SBram Moolenaarhi def link vimSynOption	Special
933071d4279SBram Moolenaarhi def link vimSynPatRange	vimString
934071d4279SBram Moolenaarhi def link vimSynRegOpt	vimSynOption
935071d4279SBram Moolenaarhi def link vimSynRegPat	vimString
93683d1b190SBram Moolenaarhi def link vimSynReg	Type
937071d4279SBram Moolenaarhi def link vimSyntax	vimCommand
938071d4279SBram Moolenaarhi def link vimSynType	vimSpecial
93983d1b190SBram Moolenaarhi def link vimTodo	Todo
9405c73622aSBram Moolenaarhi def link vimUnmap	vimMap
94183d1b190SBram Moolenaarhi def link vimUserAttrbCmpltFunc	Special
942071d4279SBram Moolenaarhi def link vimUserAttrbCmplt	vimSpecial
943071d4279SBram Moolenaarhi def link vimUserAttrbKey	vimOption
944071d4279SBram Moolenaarhi def link vimUserAttrb	vimSpecial
945b4ff518dSBram Moolenaarhi def link vimUserAttrbError	Error
946e2719096SBram Moolenaarhi def link vimUserCmdError	Error
94783d1b190SBram Moolenaarhi def link vimUserCommand	vimCommand
9485c73622aSBram Moolenaarhi def link vimUserFunc	Normal
9496be7f873SBram Moolenaarhi def link vimVar	Identifier
9503577c6faSBram Moolenaarhi def link vimWarn	WarningMsg
951071d4279SBram Moolenaar
952cfbc5ee4SBram Moolenaar" Current Syntax Variable: {{{2
953071d4279SBram Moolenaarlet b:current_syntax = "vim"
9546be7f873SBram Moolenaar
9556be7f873SBram Moolenaar" ---------------------------------------------------------------------
9566be7f873SBram Moolenaar" Cleanup: {{{1
957a0f849eeSBram Moolenaardelc VimFolda
958a0f849eeSBram Moolenaardelc VimFoldf
959a0f849eeSBram Moolenaardelc VimFoldl
960a0f849eeSBram Moolenaardelc VimFoldm
961a0f849eeSBram Moolenaardelc VimFoldp
962a0f849eeSBram Moolenaardelc VimFoldP
963a0f849eeSBram Moolenaardelc VimFoldr
964a0f849eeSBram Moolenaardelc VimFoldt
9656be7f873SBram Moolenaarlet &cpo = s:keepcpo
9666be7f873SBram Moolenaarunlet s:keepcpo
967071d4279SBram Moolenaar" vim:ts=18  fdm=marker
968