xref: /vim-8.2.3635/runtime/syntax/vim.vim (revision 9da7ff70)
1071d4279SBram Moolenaar" Vim syntax file
27cba6c06SBram Moolenaar" Language:	Vim 7.4 script
37cba6c06SBram Moolenaar" Maintainer:	Charles E. Campbell <[email protected]>
4*9da7ff70SBram Moolenaar" Last Change:	Jan 13, 2015
5*9da7ff70SBram Moolenaar" Version:	7.4-28
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
21e2719096SBram Moolenaarsyn keyword vimCommand contained	a arga[dd] ar[gs] bd[elete] bN[ext] breakl[ist] b[uffer] cad cb[uffer] cf[ile] changes cl[ist] cn[ext] col[der] conf[irm] cq[uit] cw[indow] delc[ommand] deletl delp 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] lefta[bove] lg[etfile] lla[st] lnew[er] lNf[ile] lockv[ar] ls lvimgrepa[dd] mat[ch] mk[exrc] mo n n[ext] nu[mber] opt[ions] pe[rl] pr prof[ile] ptj[ump] ptp[revious] py3 q r[ead] redr[aw] retu[rn] rub[y] rv[iminfo] sba[ll] sbN[ext] scripte[ncoding] setf[iletype] sh[ell] sim[alt] sm[ap] sni[ff] sor[t] spelli[nfo] spr[evious] start st[op] sunmenu syn ta tabf[ind] tabnew tabr[ewind] tcld[o] tj[ump] tN tr tu[nmenu] undoj[oin] uns[ilent] ve[rsion] vimgrepa[dd] vs[plit] winc[md] wN[ext] ws[verb] x[it] xnoremenu
22e2719096SBram Moolenaarsyn keyword vimCommand contained	ab argd[elete] argu[ment] bel[owright] bo[tright] br[ewind] buffers caddb[uffer] cc cfir[st] chd[ir] clo[se] cN[ext] colo[rscheme] con[tinue] cr[ewind] d delel deletp dep 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] lex[pr] lgr[ep] lli[st] lne[xt] lo lol[der] lt[ag] lw[indow] menut mks[ession] mod[e] nbc[lose] nmapc[lear] o ownsyntax perld[o] pre[serve] promptf[ind] ptl[ast] ptr[ewind] py3do qa[ll] rec[over] redraws[tatus] rew[ind] rubyd[o] sal[l] sbf[irst] sbp[revious] scrip[tnames] setg[lobal] si sl sme sno[magic] so[urce] spellr[epall] sre[wind] startg[replace] stopi[nsert] sus[pend] sync tab tabfir[st] tabn[ext] tabs tclf[ile] tl[ast] tn[ext] tr[ewind] u undol[ist] up[date] vert[ical] vi[sual] w windo wp[revious] wundo xmapc[lear] xunme
23e2719096SBram Moolenaarsyn keyword vimCommand contained	abc[lear] argdo as[cii] bf[irst] bp[revious] bro[wse] bun[load] cad[dexpr] ccl[ose] cgetb[uffer] che[ckpath] cmapc[lear] cnf com cope[n] cs de delep delf di 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] lf[ile] lgrepa[dd] lmak[e] lN[ext] loadk lop[en] lua ma menut[ranslate] mksp[ell] m[ove] nb[key] noa ol[dfiles] p po[p] prev[ious] promptr[epl] ptn pts[elect] pydo q[uit] red reg[isters] ri[ght] rubyf[ile] san[dbox] sbl[ast] sbr[ewind] scs setl[ocal] sig sla[st] smenu snoreme spe spellu[ndo] st star[tinsert] sts[elect] sv[iew] syncbind tabc[lose] tabl[ast] tabN[ext] ta[g] te[aroff] tm tN[ext] try un unh[ide] v vi viu[sage] wa[ll] winp[os] wq wv[iminfo] xme xunmenu
24e2719096SBram Moolenaarsyn keyword vimCommand contained	abo[veleft] arge[dit] au bl[ast] brea[k] bu bw[ipeout] caddf[ile] cd cgete[xpr] checkt[ime] cn cNf comc[lear] co[py] cscope debug d[elete] delf[unction] diffg[et] diffu[pdate] 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 lfir[st] lh[elpgrep] lmapc[lear] lnf loadkeymap lpf[ile] luado mak[e] mes mkv mz nbs[tart] noautocmd omapc[lear] pc[lose] popu p[rint] ps[earch] ptN pu[t] pyf[ile] quita[ll] redi[r] res[ize] rightb[elow] rundo sa[rgument] sbm[odified] sb[uffer] scscope sf[ind] sign sl[eep] sn[ext] snoremenu spelld[ump] spellw[rong] sta[g] startr[eplace] sun[hide] sw[apname] syntime tabd[o] tabm[ove] tabo[nly] tags tf[irst] tm[enu] to[pleft] ts[elect] una[bbreviate] unl ve vie[w] vmapc[lear] wh[ile] win[size] wqa[ll] x xmenu xwininfo
25e2719096SBram Moolenaarsyn keyword vimCommand contained	al[l] argg[lobal] bad[d] bm[odified] breaka[dd] buf c cal[l] ce[nter] cg[etfile] cl cN cnf[ile] comp[iler] cpf[ile] cstag debugg[reedy] deletel dell 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 lgetb[uffer] l[ist] lN lNf lo[adview] lp[revious] luafile ma[rk] messages mkvie[w] mzf[ile] ne noh[lsearch] on[ly] pe popu[p] pro pta[g] ptn[ext] pw[d] py[thon] r red[o] ret[ab] ru ru[ntime] sav[eas] sbn[ext] scrip se[t] sfir[st] sil[ent] sm[agic] sN[ext] so spe[llgood] sp[lit] star stj[ump] sunme sy t tabe[dit] tabN tabp[revious] tc[l] th[row] tn tp[revious] tu u[ndo] unlo[ckvar] verb[ose] vim[grep] vne[w] win wn[ext] w[rite] xa[ll] xnoreme y[ank]
26e2719096SBram Moolenaarsyn keyword vimCommand contained	ar argl[ocal] ba[ll] bn[ext] breakd[el] bufdo cabc[lear] cat[ch] cex[pr] c[hange] cla[st] cnew[er] cNf[ile] con cp[revious] cuna[bbrev] del deletep delm[arks] 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] le[ft] lgete[xpr] ll lne lnf[ile] loc[kmarks] lr[ewind] lv[imgrep] marks mk mkv[imrc] mz[scheme] new noswap[file] o[pen] ped[it] pp[op] profd[el] ptf[irst] ptN[ext] py python3 re
27e2719096SBram Moolenaarsyn match   vimCommand contained	"\<z[-+^.=]\=\>"
28a6878375SBram Moolenaarsyn keyword vimStdPlugin contained	DiffOrig Man N[ext] P[rint] S TOhtml XMLent XMLns
29071d4279SBram Moolenaar
30071d4279SBram Moolenaar" vimOptions are caught only when contained in a vimSet {{{2
31e2719096SBram Moolenaarsyn keyword vimOption contained	acd ambiwidth arabicshape autowriteall backupdir bdlay binary breakat bs casemap cf cink cmdheight colorcolumn completefunc copyindent cryptmethod cscopeverbose csverb debug dict dir eb enc errorbells expandtab fdl fenc fileencodings fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imcmdline imsf indentexpr is isp keywordprg laststatus lisp loadplugins macatsui maxcombine mef mls modelines mousehide mp nu omnifunc paragraphs penc pm printdevice printoptions quoteescape remap rightleftcmd rtp sbo scrolljump sel shell shelltype shortname shq sm so spellfile spr st sts swapsync syn tag tb termbidi tgst titleold top ttimeoutlen ttyscroll ul ur verbosefile visualbell wcm wi wildmenu winfixwidth wm wrapscan
32e2719096SBram Moolenaarsyn keyword vimOption contained	ai ambw ari aw backupext beval biosk breakindent bsdir cb cfu cinkeys cmdwinheight columns completeopt cot cscopepathcomp cspc cuc deco dictionary directory ed encoding errorfile exrc fdls fencs fileformat flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imd imstatusfunc indentkeys isf isprint km lazyredraw lispwords lpl magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste pex pmbcs printencoding prompt rdt renderoptions rl ru sbr scrolloff selection shellcmdflag shellxescape showbreak si smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tbi termencoding thesaurus titlestring tpm ttm ttytype undodir ut vfile vop wd wic wildmode winheight wmh write
33e2719096SBram Moolenaarsyn keyword vimOption contained	akm anti arshape awa backupskip bex bioskey breakindentopt bsk cc ch cino cmp com concealcursor cp cscopeprg csprg cul def diff display edcompatible endofline errorformat fcl fdm fex fileformats fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatefunc imdisable inc indk isfname joinspaces kmp lbr list ls makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc pastetoggle pexpr pmbfn printexpr pt re report rlc ruf sc scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartindent sol spellsuggest sr stal sua swf syntax taglength tbidi terse tildeop tl tr tty tw undofile vb vi wa weirdinvert wig wildoptions winminheight wmnu writeany
34e2719096SBram Moolenaarsyn keyword vimOption contained	al antialias autochdir background balloondelay bexpr bk bri bt ccv charconvert cinoptions cms comments conceallevel cpo cscopequickfix csqf cursorbind define diffexpr dy ef eol esckeys fcs fdn ff fileignorecase fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imactivatekey imi include inex isi js kp lcs listchars lsp makeprg maxmem mh mmp more mouses mzq nuw opfunc patchexpr pfn popt printfont pumheight readonly restorescreen rnu ruler scb scs sessionoptions shellquote shiftround showfulltag sidescrolloff smarttab sp spf srr startofline suffixes switchbuf ta tagrelative tbis textauto timeout tm ts ttybuiltin tx undolevels vbs viewdir wak wfh wildchar wim winminwidth wmw writebackup
35e2719096SBram Moolenaarsyn keyword vimOption contained	aleph ar autoindent backspace ballooneval bg bkc briopt bufhidden cd ci cinw co commentstring confirm cpoptions cscoperelative csre cursorcolumn delcombine diffopt ea efm ep et fdc fdo ffs filetype fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imaf iminsert includeexpr inf isident key langmap linebreak lm lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchmode ph preserveindent printheader pvh redrawtime revins ro rulerformat scr sect sft shellredir shiftwidth showmatch siso smc spc spl ss statusline suffixesadd sws tabline tags tbs textmode timeoutlen to tsl ttyfast uc undoreload vdir viewoptions warn wfw wildcharm winaltkeys winwidth wop writedelay
36e2719096SBram Moolenaarsyn keyword vimOption contained	allowrevins arab autoread backup balloonexpr bh bl brk buflisted cdpath cin cinwords cocu compatible consk cpt cscopetag cst cursorline dex digraph ead ei equalalways eventignore fde fdt fic fillchars foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imak ims incsearch infercase isk keymap langmenu lines lmap lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa path pheader previewheight printmbcharset pvw regexpengine ri rop runtimepath scroll sections sh shellslash shm showmode sj smd spell splitbelow ssl stl sw sxe tabpagemax tagstack tenc textwidth title toolbar tsr ttym udf updatecount ve viminfo wb wh wildignore window wiv wrap ws
37e2719096SBram Moolenaarsyn keyword vimOption contained	altkeymap arabic autowrite backupcopy bdir bin bomb browsedir buftype cedit cindent clipboard cole complete conskey crb cscopetagorder csto cwh dg dip eadirection ek equalprg ex fdi fen fileencoding fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imc imsearch inde insertmode iskeyword keymodel langnoremap linespace lnr ma matchtime mco ml modeline mousefocus mousetime nrformats ofu para pdev pi previewwindow printmbfont qe relativenumber rightleft rs sb scrollbind secure shcf shelltemp shortmess showtabline slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tal term tf titlelen toolbariconsize ttimeout ttymouse udir updatetime verbose virtualedit wc whichwrap wildignorecase winfixheight wiw wrapmargin ww
38071d4279SBram Moolenaar
39071d4279SBram Moolenaar" vimOptions: These are the turn-off setting variants {{{2
40a6878375SBram Moolenaarsyn keyword vimOption contained	noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noendofline noerrorbells noex nofen nofk nogd nohid nohkmap nohkp nohlsearch noicon noim noimcmdline noimdisable noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist 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
41a6878375SBram Moolenaarsyn keyword vimOption contained	noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobiosk nobl nocf nocindent noconsk nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noeol noesckeys noexpandtab nofic nofkmap nogdefault nohidden nohkmapp nohls noic noignorecase noimc noimd noincsearch noinfercase nois nojs nolbr nolisp 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
42a6878375SBram Moolenaarsyn keyword vimOption contained	noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobioskey nobomb noci nocompatible noconskey nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noequalalways noet noexrc nofileignorecase nofoldenable noguipty nohk
43071d4279SBram Moolenaar
44071d4279SBram Moolenaar" vimOptions: These are the invertible variants {{{2
45a6878375SBram Moolenaarsyn keyword vimOption contained	invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbinary invbk invbuflisted invcin invconfirm invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invendofline inverrorbells invex invfen invfk invgd invhid invhkmap invhkp invhlsearch invicon invim invimcmdline invimdisable invinf invinsertmode invjoinspaces invlazyredraw invlinebreak invlist 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
46a6878375SBram Moolenaarsyn keyword vimOption contained	invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invbeval invbiosk invbl invcf invcindent invconsk invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible inveol invesckeys invexpandtab invfic invfkmap invgdefault invhidden invhkmapp invhls invic invignorecase invimc invimd invincsearch invinfercase invis invjs invlbr invlisp 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
47a6878375SBram Moolenaarsyn keyword vimOption contained	invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbioskey invbomb invci invcompatible invconskey invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invequalalways invet invexrc invfileignorecase invfoldenable invguipty invhk
48071d4279SBram Moolenaar
49071d4279SBram Moolenaar" termcap codes (which can also be set) {{{2
50a6878375SBram Moolenaarsyn keyword vimOption contained	t_AB t_al t_bc t_ce t_cl t_Co t_Cs t_CS t_CV t_da t_db t_dl 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_RI t_RV t_Sb t_se t_Sf t_SI t_so 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_xs t_ZH t_ZR
51a6878375SBram Moolenaarsyn keyword vimOption contained	t_AF t_AL t_cd t_Ce t_cm t_cs
52071d4279SBram Moolenaarsyn match   vimOption contained	"t_%1"
53071d4279SBram Moolenaarsyn match   vimOption contained	"t_#2"
54071d4279SBram Moolenaarsyn match   vimOption contained	"t_#4"
55071d4279SBram Moolenaarsyn match   vimOption contained	"t_@7"
56071d4279SBram Moolenaarsyn match   vimOption contained	"t_*7"
57071d4279SBram Moolenaarsyn match   vimOption contained	"t_&8"
58071d4279SBram Moolenaarsyn match   vimOption contained	"t_%i"
59071d4279SBram Moolenaarsyn match   vimOption contained	"t_k;"
60071d4279SBram Moolenaar
61071d4279SBram Moolenaar" unsupported settings: these are supported by vi but don't do anything in vim {{{2
62cd71fa3cSBram Moolenaarsyn keyword vimErrSetting contained	hardtabs ht w1200 w300 w9600
63071d4279SBram Moolenaar
6480a94a58SBram Moolenaar" AutoCmd Events {{{2
65071d4279SBram Moolenaarsyn case ignore
66e2719096SBram 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 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
67071d4279SBram Moolenaar
68071d4279SBram Moolenaar" Highlight commonly used Groupnames {{{2
69b2c0350cSBram 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
70071d4279SBram Moolenaar
71071d4279SBram Moolenaar" Default highlighting groups {{{2
72a6878375SBram 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
73293ee4d4SBram Moolenaarsyn match vimHLGroup contained	"Conceal"
74071d4279SBram Moolenaarsyn case match
75071d4279SBram Moolenaar
76071d4279SBram Moolenaar" Function Names {{{2
77e2719096SBram Moolenaarsyn keyword vimFuncName contained	abs and argidx asin browse buflisted bufnr byteidx ceil cindent complete confirm cosh cursor did_filetype empty eventhandler exists expr8 filereadable finddir floor fnamemodify foldlevel foreground get getchar getcmdpos getcwd getfsize getline getpid getreg gettabwinvar getwinvar has hasmapto histget hlID indent inputdialog inputsave invert items len line localtime luaeval mapcheck matchaddpos matchend max mode nr2char pow pumvisible range reltimestr remote_peek remove resolve screenattr screenrow searchpair server2client setcmdpos setmatches setreg setwinvar shiftwidth sin sort spellbadword split str2float strchars strftime string strpart strtrans submatch synconcealed synIDattr synstack systemlist tabpagenr tagfiles tan tempname toupper trunc undofile uniq virtcol wildmenumode wincol winline winrestcmd winsaveview writefile
78e2719096SBram Moolenaarsyn keyword vimFuncName contained	acos append arglistid 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 getcmdtype getfontname getftime getloclist getpos getregtype getwinposx glob has_key histadd histnr hostname index inputlist inputsecret isdirectory join libcall line2byte log map match matcharg matchlist min mzeval or prevnonblank py3eval readfile remote_expr remote_read rename reverse screenchar search searchpairpos serverlist setline setpos settabvar sha256 simplify sinh soundfold spellsuggest sqrt str2nr strdisplaywidth stridx strlen strridx strwidth substitute synID synIDtrans system tabpagebuflist tabpagewinnr taglist tanh tolower tr type undotree values visualmode winbufnr winheight winnr winrestview winwidth xor
79e2719096SBram Moolenaarsyn keyword vimFuncName contained	add argc argv 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 getcmdline getcurpos getfperm getftype getmatches getqflist gettabvar getwinposy globpath haslocaldir histdel hlexists iconv input inputrestore insert islocked keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr mkdir nextnonblank pathshorten printf pyeval reltime remote_foreground remote_send repeat round screencol searchdecl searchpos setbufvar setloclist setqflist settabwinvar shellescape
80071d4279SBram Moolenaar
81ac7bd638SBram Moolenaar"--- syntax here and above generated by mkvimvim ---
82cfbc5ee4SBram Moolenaar" Special Vim Highlighting (not automatic) {{{1
83071d4279SBram Moolenaar
84fa01c39dSBram Moolenaar" commands not picked up by the generator (due to non-standard format)
85fa01c39dSBram Moolenaarsyn keyword vimCommand contained	py3
86fa01c39dSBram Moolenaar
873577c6faSBram Moolenaar" Deprecated variable options {{{2
883577c6faSBram Moolenaarif exists("g:vim_minlines")
893577c6faSBram Moolenaar let g:vimsyn_minlines= g:vim_minlines
903577c6faSBram Moolenaarendif
913577c6faSBram Moolenaarif exists("g:vim_maxlines")
923577c6faSBram Moolenaar let g:vimsyn_maxlines= g:vim_maxlines
933577c6faSBram Moolenaarendif
943577c6faSBram Moolenaarif exists("g:vimsyntax_noerror")
953577c6faSBram Moolenaar let g:vimsyn_noerror= g:vimsyntax_noerror
963577c6faSBram Moolenaarendif
973577c6faSBram Moolenaar
98cfbc5ee4SBram Moolenaar" Numbers {{{2
99071d4279SBram Moolenaar" =======
100*9da7ff70SBram Moolenaarsyn match vimNumber	"\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand
101*9da7ff70SBram Moolenaarsyn match vimNumber	"-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\="  skipwhite nextgroup=vimGlobal,vimSubst,vimCommand
102071d4279SBram Moolenaarsyn match vimNumber	"\<0[xX]\x\+"
103e2719096SBram Moolenaarsyn match vimNumber	"\%(^\|[^a-zA-Z]\)\zs#\x\{6}"
104071d4279SBram Moolenaar
105cfbc5ee4SBram Moolenaar" All vimCommands are contained by vimIsCommands. {{{2
106e2719096SBram Moolenaarsyn match vimCmdSep	"[:|]\+"	skipwhite nextgroup=vimAddress,vimAutoCmd,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
107293ee4d4SBram Moolenaarsyn match vimIsCommand	"\<\h\w*\>"	contains=vimCommand
108e2719096SBram Moolenaarsyn match vimVar		"\<[bwglsav]:\K\k*\>"
109e2719096SBram Moolenaarsyn match vimVar        contained	"\<\K\k*\>"
110e2719096SBram Moolenaarsyn match vimFBVar      contained   "\<[bwglsav]:\K\k*\>"
1113b1ddfedSBram Moolenaarsyn keyword vimCommand  contained	in
112071d4279SBram Moolenaar
113cfbc5ee4SBram Moolenaar" Insertions And Appends: insert append {{{2
114071d4279SBram Moolenaar" =======================
115071d4279SBram Moolenaarsyn region vimInsert	matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$"	matchgroup=vimCommand end="^\.$""
116071d4279SBram Moolenaarsyn region vimInsert	matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$"	matchgroup=vimCommand end="^\.$""
117071d4279SBram Moolenaarsyn region vimInsert	matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$"	matchgroup=vimCommand end="^\.$""
118071d4279SBram Moolenaar
119cfbc5ee4SBram Moolenaar" Behave! {{{2
120071d4279SBram Moolenaar" =======
121071d4279SBram Moolenaarsyn match   vimBehave	"\<be\%[have]\>" skipwhite nextgroup=vimBehaveModel,vimBehaveError
122071d4279SBram Moolenaarsyn keyword vimBehaveModel contained	mswin	xterm
1236be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
124071d4279SBram Moolenaar syn match   vimBehaveError contained	"[^ ]\+"
125cfbc5ee4SBram Moolenaarendif
126071d4279SBram Moolenaar
127cfbc5ee4SBram Moolenaar" Filetypes {{{2
128071d4279SBram Moolenaar" =========
129293ee4d4SBram Moolenaarsyn match   vimFiletype	"\<filet\%[ype]\(\s\+\I\i*\)*"	skipwhite contains=vimFTCmd,vimFTOption,vimFTError
1306be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
131071d4279SBram Moolenaar syn match   vimFTError  contained	"\I\i*"
132cfbc5ee4SBram Moolenaarendif
133071d4279SBram Moolenaarsyn keyword vimFTCmd    contained	filet[ype]
134071d4279SBram Moolenaarsyn keyword vimFTOption contained	detect indent off on plugin
135071d4279SBram Moolenaar
136cfbc5ee4SBram Moolenaar" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
137071d4279SBram Moolenaar" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
138e2719096SBram 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
1393577c6faSBram Moolenaarif exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'a'
140e2719096SBram 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
1413577c6faSBram Moolenaarelse
142e2719096SBram Moolenaar syn region  vimAugroup	matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>"	contains=vimAutoCmd,@vimAugroupList
1433577c6faSBram Moolenaarendif
1443b1ddfedSBram Moolenaarsyn match   vimAugroup	"aug\%[roup]!" contains=vimAugroupKey
1456be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
146071d4279SBram Moolenaar syn match   vimAugroupError	"\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
147cfbc5ee4SBram Moolenaarendif
148e2719096SBram Moolenaar"syn keyword vimAugroupKey contained	aug[roup]
149071d4279SBram Moolenaar
150cfbc5ee4SBram Moolenaar" Operators: {{{2
151071d4279SBram Moolenaar" =========
152*9da7ff70SBram Moolenaarsyn cluster	vimOperGroup	contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
153071d4279SBram Moolenaarsyn match	vimOper	"\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}"	skipwhite nextgroup=vimString,vimSpecFile
154071d4279SBram Moolenaarsyn match	vimOper	"||\|&&\|[-+.]"	skipwhite nextgroup=vimString,vimSpecFile
155e2719096SBram Moolenaarsyn region	vimOperParen 	oneline matchgroup=vimParenSep	start="(" end=")" contains=@vimOperGroup
156e2719096SBram Moolenaarsyn region	vimOperParen	oneline matchgroup=vimSep	start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
1576be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
158071d4279SBram Moolenaar syn match	vimOperError	")"
159cfbc5ee4SBram Moolenaarendif
160071d4279SBram Moolenaar
1613577c6faSBram Moolenaar" Functions : Tag is provided for those who wish to highlight tagged functions {{{2
1623577c6faSBram Moolenaar" =========
1635c73622aSBram Moolenaarsyn cluster	vimFuncList	contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
164*9da7ff70SBram 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
1655c73622aSBram Moolenaarsyn match	vimFunction	"\<fu\%[nction]!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*("	contains=@vimFuncList nextgroup=vimFuncBody
1665c73622aSBram Moolenaar
1673577c6faSBram Moolenaarif exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f'
1683577c6faSBram Moolenaar syn region	vimFuncBody  contained	fold start="\ze("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
1693577c6faSBram Moolenaarelse
1703577c6faSBram Moolenaar syn region	vimFuncBody  contained	start="\ze("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
1713577c6faSBram Moolenaarendif
172e2719096SBram Moolenaarsyn match	vimFuncVar   contained	"a:\(\K\k*\|\d\+\)"
1733577c6faSBram Moolenaarsyn match	vimFuncSID   contained	"\c<sid>\|\<s:"
1743577c6faSBram Moolenaarsyn keyword	vimFuncKey   contained	fu[nction]
1753577c6faSBram Moolenaarsyn match	vimFuncBlank contained	"\s\+"
1763577c6faSBram Moolenaar
1773577c6faSBram Moolenaarsyn keyword	vimPattern   contained	start	skip	end
1783577c6faSBram Moolenaar
179cfbc5ee4SBram Moolenaar" Special Filenames, Modifiers, Extension Removal: {{{2
180071d4279SBram Moolenaar" ===============================================
181071d4279SBram Moolenaarsyn match	vimSpecFile	"<c\(word\|WORD\)>"	nextgroup=vimSpecFileMod,vimSubst
182071d4279SBram Moolenaarsyn match	vimSpecFile	"<\([acs]file\|amatch\|abuf\)>"	nextgroup=vimSpecFileMod,vimSubst
183071d4279SBram Moolenaarsyn match	vimSpecFile	"\s%[ \t:]"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
184071d4279SBram Moolenaarsyn match	vimSpecFile	"\s%$"ms=s+1	nextgroup=vimSpecFileMod,vimSubst
185071d4279SBram Moolenaarsyn match	vimSpecFile	"\s%<"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
186071d4279SBram Moolenaarsyn match	vimSpecFile	"#\d\+\|[#%]<\>"	nextgroup=vimSpecFileMod,vimSubst
187071d4279SBram Moolenaarsyn match	vimSpecFileMod	"\(:[phtre]\)\+"	contained
188071d4279SBram Moolenaar
189cfbc5ee4SBram Moolenaar" User-Specified Commands: {{{2
190071d4279SBram Moolenaar" =======================
1915c73622aSBram 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
192071d4279SBram Moolenaarsyn keyword	vimUserCommand	contained	com[mand]
193071d4279SBram Moolenaarsyn match	vimUserCmd	"\<com\%[mand]!\=\>.*$"	contains=vimUserAttrb,vimUserCommand,@vimUserCmdList
194071d4279SBram Moolenaarsyn match	vimUserAttrb	contained	"-n\%[args]=[01*?+]"	contains=vimUserAttrbKey,vimOper
195071d4279SBram Moolenaarsyn match	vimUserAttrb	contained	"-com\%[plete]="	contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
196071d4279SBram Moolenaarsyn match	vimUserAttrb	contained	"-ra\%[nge]\(=%\|=\d\+\)\="	contains=vimNumber,vimOper,vimUserAttrbKey
197071d4279SBram Moolenaarsyn match	vimUserAttrb	contained	"-cou\%[nt]=\d\+"	contains=vimNumber,vimOper,vimUserAttrbKey
198071d4279SBram Moolenaarsyn match	vimUserAttrb	contained	"-bang\=\>"	contains=vimOper,vimUserAttrbKey
199071d4279SBram Moolenaarsyn match	vimUserAttrb	contained	"-bar\>"	contains=vimOper,vimUserAttrbKey
200071d4279SBram Moolenaarsyn match	vimUserAttrb	contained	"-re\%[gister]\>"	contains=vimOper,vimUserAttrbKey
2016be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
202071d4279SBram Moolenaar syn match	vimUserCmdError	contained	"\S\+\>"
203cfbc5ee4SBram Moolenaarendif
204071d4279SBram Moolenaarsyn case ignore
205071d4279SBram Moolenaarsyn keyword	vimUserAttrbKey   contained	bar	ban[g]	cou[nt]	ra[nge] com[plete]	n[args]	re[gister]
206*9da7ff70SBram 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
207a93fa7eeSBram Moolenaarsyn keyword	vimUserAttrbCmplt contained	custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
208*9da7ff70SBram Moolenaarsyn match	vimUserAttrbCmpltFunc contained	",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
209a93fa7eeSBram Moolenaar
210071d4279SBram Moolenaarsyn case match
211071d4279SBram Moolenaarsyn match	vimUserAttrbCmplt contained	"custom,\u\w*"
212071d4279SBram Moolenaar
213cfbc5ee4SBram Moolenaar" Lower Priority Comments: after some vim commands... {{{2
214071d4279SBram Moolenaar" =======================
215071d4279SBram Moolenaarsyn match	vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString
216071d4279SBram Moolenaarsyn match	vimComment	+\<endif\s\+".*$+lc=5	contains=@vimCommentGroup,vimCommentString
217071d4279SBram Moolenaarsyn match	vimComment	+\<else\s\+".*$+lc=4	contains=@vimCommentGroup,vimCommentString
2184770d09aSBram Moolenaarsyn region	vimCommentString	contained oneline start='\S\s\+"'ms=e	end='"'
219071d4279SBram Moolenaar
220cfbc5ee4SBram Moolenaar" Environment Variables: {{{2
221071d4279SBram Moolenaar" =====================
222071d4279SBram Moolenaarsyn match	vimEnvvar	"\$\I\i*"
223071d4279SBram Moolenaarsyn match	vimEnvvar	"\${\I\i*}"
224071d4279SBram Moolenaar
225cfbc5ee4SBram Moolenaar" In-String Specials: {{{2
226071d4279SBram Moolenaar" Try to catch strings, if nothing else matches (therefore it must precede the others!)
227071d4279SBram Moolenaar"  vimEscapeBrace handles ["]  []"] (ie. "s don't terminate string inside [])
228d68071d8SBram Moolenaarsyn region	vimEscapeBrace	oneline   contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
229071d4279SBram Moolenaarsyn match	vimPatSepErr	contained	"\\)"
230071d4279SBram Moolenaarsyn match	vimPatSep	contained	"\\|"
231383f9bc3SBram Moolenaarsyn region	vimPatSepZone	oneline   contained   matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]"	contains=@vimStringGroup
232383f9bc3SBram Moolenaarsyn region	vimPatRegion	contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)"	contains=@vimSubstList oneline
233071d4279SBram Moolenaarsyn match	vimNotPatSep	contained	"\\\\"
2349964e468SBram Moolenaarsyn cluster	vimStringGroup	contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
235*9da7ff70SBram Moolenaarsyn region	vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+	contains=@vimStringGroup
236*9da7ff70SBram Moolenaarsyn region	vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+
237071d4279SBram Moolenaarsyn region	vimString	oneline	start=+=!+lc=1	skip=+\\\\\|\\!+ end=+!+	contains=@vimStringGroup
238071d4279SBram Moolenaarsyn region	vimString	oneline	start="=+"lc=1	skip="\\\\\|\\+" end="+"	contains=@vimStringGroup
239071d4279SBram Moolenaarsyn region	vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup
240071d4279SBram Moolenaarsyn match	vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
241071d4279SBram Moolenaarsyn match	vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
242071d4279SBram Moolenaar
243cfbc5ee4SBram Moolenaar" Substitutions: {{{2
244071d4279SBram Moolenaar" =============
245071d4279SBram Moolenaarsyn cluster	vimSubstList	contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
246071d4279SBram Moolenaarsyn cluster	vimSubstRepList	contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
247071d4279SBram Moolenaarsyn cluster	vimSubstList	add=vimCollection
248*9da7ff70SBram Moolenaarsyn match	vimSubst	"\(:\+\s*\|^\s*\||\s*\)\<\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[:[:alpha:]]\@!" nextgroup=vimSubstPat
2495c73622aSBram Moolenaarsyn match	vimSubst	"s\%[ubstitute][:#[:alpha:]]\@!"	nextgroup=vimSubstPat contained
250071d4279SBram Moolenaarsyn match	vimSubst	"/\zss\%[ubstitute]\ze/"	nextgroup=vimSubstPat
251071d4279SBram Moolenaarsyn match	vimSubst1       contained	"s\%[ubstitute]\>"	nextgroup=vimSubstPat
252071d4279SBram 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
253071d4279SBram Moolenaarsyn region	vimSubstRep4    contained	matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList	nextgroup=vimSubstFlagErr	oneline
254071d4279SBram Moolenaarsyn region	vimCollection   contained transparent	start="\\\@<!\[" skip="\\\[" end="\]"	contains=vimCollClass
255071d4279SBram Moolenaarsyn match	vimCollClassErr contained	"\[:.\{-\}:\]"
256071d4279SBram Moolenaarsyn match	vimCollClass    contained transparent	"\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
257071d4279SBram Moolenaarsyn match	vimSubstSubstr  contained	"\\z\=\d"
258071d4279SBram Moolenaarsyn match	vimSubstTwoBS   contained	"\\\\"
259a5792f58SBram Moolenaarsyn match	vimSubstFlagErr contained	"[^< \t\r|]\+" contains=vimSubstFlags
260071d4279SBram Moolenaarsyn match	vimSubstFlags   contained	"[&cegiIpr]\+"
261071d4279SBram Moolenaar
262cfbc5ee4SBram Moolenaar" 'String': {{{2
2638b6144bdSBram Moolenaarsyn match	vimString	"[^(,]'[^']\{-}\zs'"
264071d4279SBram Moolenaar
265cfbc5ee4SBram Moolenaar" Marks, Registers, Addresses, Filters: {{{2
266071d4279SBram Moolenaarsyn match	vimMark	"'[a-zA-Z0-9]\ze[-+,!]"	nextgroup=vimOper,vimMarkNumber,vimSubst
267071d4279SBram Moolenaarsyn match	vimMark	"'[<>]\ze[-+,!]"		nextgroup=vimOper,vimMarkNumber,vimSubst
268071d4279SBram Moolenaarsyn match	vimMark	",\zs'[<>]\ze"		nextgroup=vimOper,vimMarkNumber,vimSubst
269071d4279SBram Moolenaarsyn match	vimMark	"[!,:]\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
270071d4279SBram Moolenaarsyn match	vimMark	"\<norm\%[al]\s\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
271071d4279SBram Moolenaarsyn match	vimMarkNumber	"[-+]\d\+"		nextgroup=vimSubst contained contains=vimOper
272071d4279SBram Moolenaarsyn match	vimPlainMark contained	"'[a-zA-Z0-9]"
273071d4279SBram Moolenaar
2746be7f873SBram Moolenaarsyn match	vimRegister	'[^,;[{]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
2755b8d8fdbSBram Moolenaarsyn match	vimRegister	'\<norm\s\+\zs"[a-zA-Z0-9]'
2765b8d8fdbSBram Moolenaarsyn match	vimRegister	'\<normal\s\+\zs"[a-zA-Z0-9]'
277cfbc5ee4SBram Moolenaarsyn match	vimRegister	'@"'
278071d4279SBram Moolenaarsyn match	vimPlainRegister contained	'"[a-zA-Z0-9\-:.%#*+=]'
279071d4279SBram Moolenaar
2805b8d8fdbSBram Moolenaarsyn match	vimAddress	",\zs[.$]"	skipwhite nextgroup=vimSubst1
2815b8d8fdbSBram Moolenaarsyn match	vimAddress	"%\ze\a"	skipwhite nextgroup=vimString,vimSubst1
282071d4279SBram Moolenaar
283071d4279SBram Moolenaarsyn match	vimFilter contained	"^!.\{-}\(|\|$\)"		contains=vimSpecFile
284d960d76dSBram Moolenaarsyn match	vimFilter contained	"\A!.\{-}\(|\|$\)"ms=s+1	contains=vimSpecFile,vimFunction,vimFuncName,vimOperParen
285071d4279SBram Moolenaar
286cfbc5ee4SBram Moolenaar" Complex repeats (:h complex-repeat) {{{2
2876be7f873SBram Moolenaarsyn match	vimCmplxRepeat	'[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
2886be7f873SBram Moolenaarsyn match	vimCmplxRepeat	'@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
289071d4279SBram Moolenaar
290cfbc5ee4SBram Moolenaar" Set command and associated set-options (vimOptions) with comment {{{2
29174cbdf03SBram 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
292*9da7ff70SBram Moolenaarsyn region	vimSetEqual	contained	start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar oneline
293071d4279SBram Moolenaarsyn region	vimSetString	contained	start=+="+hs=s+1	skip=+\\\\\|\\"+  end=+"+	contains=vimCtrlChar
294071d4279SBram Moolenaarsyn match	vimSetSep	contained	"[,:]"
2955c73622aSBram Moolenaarsyn match	vimSetMod	contained	"&vim\=\|[!&?<]\|all&"
296071d4279SBram Moolenaar
297cfbc5ee4SBram Moolenaar" Let {{{2
298071d4279SBram Moolenaar" ===
2995c73622aSBram Moolenaarsyn keyword	vimLet	let	unl[et]	skipwhite nextgroup=vimVar,vimFuncVar
300071d4279SBram Moolenaar
301e37d50a5SBram Moolenaar" Abbreviations {{{2
302e37d50a5SBram Moolenaar" =============
303e37d50a5SBram Moolenaarsyn keyword vimAbb	ab[breviate] ca[bbrev] inorea[bbrev] cnorea[bbrev] norea[bbrev] ia[bbrev] skipwhite nextgroup=vimMapMod,vimMapLhs
304e37d50a5SBram Moolenaar
305cfbc5ee4SBram Moolenaar" Autocmd {{{2
306071d4279SBram Moolenaar" =======
307071d4279SBram Moolenaarsyn match	vimAutoEventList	contained	"\(!\s\+\)\=\(\a\+,\)*\a\+"	contains=vimAutoEvent nextgroup=vimAutoCmdSpace
308071d4279SBram Moolenaarsyn match	vimAutoCmdSpace	contained	"\s\+"	nextgroup=vimAutoCmdSfxList
309071d4279SBram Moolenaarsyn match	vimAutoCmdSfxList	contained	"\S*"
310071d4279SBram Moolenaarsyn keyword	vimAutoCmd	au[tocmd] do[autocmd] doautoa[ll]	skipwhite nextgroup=vimAutoEventList
311071d4279SBram Moolenaar
312cfbc5ee4SBram Moolenaar" Echo and Execute -- prefer strings! {{{2
313071d4279SBram Moolenaar" ================
3145c73622aSBram Moolenaarsyn region	vimEcho	oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar
3155c73622aSBram Moolenaarsyn region	vimExecute	oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar
316071d4279SBram Moolenaarsyn match	vimEchoHL	"echohl\="	skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
317071d4279SBram Moolenaarsyn case ignore
318071d4279SBram Moolenaarsyn keyword	vimEchoHLNone	none
319071d4279SBram Moolenaarsyn case match
320071d4279SBram Moolenaar
321cfbc5ee4SBram Moolenaar" Maps {{{2
322071d4279SBram Moolenaar" ====
3233577c6faSBram Moolenaarsyn match	vimMap		"\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
3245c73622aSBram 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
32581af9250SBram Moolenaarsyn keyword	vimMap		mapc[lear] smapc[lear]
3265c73622aSBram 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
327b8a7b560SBram Moolenaarsyn match	vimMapLhs	contained	"\S\+"			contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
328b8a7b560SBram Moolenaarsyn match	vimMapBang	contained	"!"			skipwhite nextgroup=vimMapMod,vimMapLhs
329e2719096SBram Moolenaarsyn match	vimMapMod	contained	"\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
330b8a7b560SBram Moolenaarsyn match	vimMapRhs	contained	".*" contains=vimNotation,vimCtrlChar	skipnl nextgroup=vimMapRhsExtend
331e2719096SBram Moolenaarsyn match	vimMapRhsExtend	contained	"^\s*\\.*$"			contains=vimContinue
332071d4279SBram Moolenaarsyn case ignore
33325e2c9e3SBram Moolenaarsyn keyword	vimMapModKey	contained	buffer	expr	leader	localleader	plug	script	sid	silent	unique
334071d4279SBram Moolenaarsyn case match
335071d4279SBram Moolenaar
336cfbc5ee4SBram Moolenaar" Menus {{{2
337071d4279SBram Moolenaar" =====
338071d4279SBram Moolenaarsyn cluster	vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
339071d4279SBram 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
340071d4279SBram Moolenaarsyn match	vimMenuName	"[^ \t\\<]\+"	contained nextgroup=vimMenuNameMore,vimMenuMap
341071d4279SBram Moolenaarsyn match	vimMenuPriority	"\d\+\(\.\d\+\)*"	contained skipwhite nextgroup=vimMenuName
342071d4279SBram Moolenaarsyn match	vimMenuNameMore	"\c\\\s\|<tab>\|\\\."	contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
343071d4279SBram Moolenaarsyn match	vimMenuMod    contained	"\c<\(script\|silent\)\+>"  skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
344071d4279SBram Moolenaarsyn match	vimMenuMap	"\s"	contained skipwhite nextgroup=vimMenuRhs
345071d4279SBram Moolenaarsyn match	vimMenuRhs	".*$"	contained contains=vimString,vimComment,vimIsCommand
346071d4279SBram Moolenaarsyn match	vimMenuBang	"!"	contained skipwhite nextgroup=@vimMenuList
347071d4279SBram Moolenaar
348cfbc5ee4SBram Moolenaar" Angle-Bracket Notation (tnx to Michael Geddes) {{{2
349071d4279SBram Moolenaar" ======================
350071d4279SBram Moolenaarsyn case ignore
351e2719096SBram 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[0-9]\)\)>" contains=vimBracket
352071d4279SBram Moolenaarsyn match	vimNotation	"\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>"	contains=vimBracket
353071d4279SBram Moolenaarsyn match	vimNotation	"\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>"		contains=vimBracket
354071d4279SBram Moolenaarsyn match	vimNotation	'\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1			contains=vimBracket
355d68071d8SBram Moolenaarsyn match	vimNotation	'\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>'	contains=vimBracket
356071d4279SBram Moolenaarsyn match	vimNotation	"\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>"		contains=vimBracket
357071d4279SBram Moolenaarsyn match	vimBracket contained	"[\\<>]"
358071d4279SBram Moolenaarsyn case match
359071d4279SBram Moolenaar
3603577c6faSBram Moolenaar" User Function Highlighting {{{2
3613577c6faSBram Moolenaar" (following Gautam Iyer's suggestion)
362071d4279SBram Moolenaar" ==========================
363e2719096SBram Moolenaarsyn match vimFunc		"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("		contains=vimFuncName,vimUserFunc,vimExecute
364e2719096SBram 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
3655c73622aSBram Moolenaarsyn match vimNotFunc	"\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>"
366071d4279SBram Moolenaar
3673577c6faSBram Moolenaar" Errors And Warnings: {{{2
3683577c6faSBram Moolenaar" ====================
3696be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
3705c73622aSBram Moolenaar syn match	vimFunctionError	"\s\zs[a-z0-9]\i\{-}\ze\s*("			contained contains=vimFuncKey,vimFuncBlank
3715c73622aSBram Moolenaar" syn match	vimFunctionError	"\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)[0-9]\i\{-}\ze\s*("	contained contains=vimFuncKey,vimFuncBlank
3723577c6faSBram Moolenaar syn match	vimElseIfErr	"\<else\s\+if\>"
3733577c6faSBram Moolenaar syn match	vimBufnrWarn	/\<bufnr\s*(\s*["']\.['"]\s*)/
3743577c6faSBram Moolenaarendif
3753577c6faSBram Moolenaar
3763577c6faSBram Moolenaar" Norm {{{2
37705159a0cSBram Moolenaar" ====
37805159a0cSBram Moolenaarsyn match	vimNorm		"\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
37905159a0cSBram Moolenaarsyn match	vimNormCmds contained	".*$"
38005159a0cSBram Moolenaar
381cfbc5ee4SBram Moolenaar" Syntax {{{2
382071d4279SBram Moolenaar"=======
383071d4279SBram Moolenaarsyn match	vimGroupList	contained	"@\=[^ \t,]*"	contains=vimGroupSpecial,vimPatSep
384071d4279SBram Moolenaarsyn match	vimGroupList	contained	"@\=[^ \t,]*,"	nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
3855c73622aSBram Moolenaarsyn keyword	vimGroupSpecial	contained	ALL	ALLBUT	CONTAINED	TOP
3866be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
387071d4279SBram Moolenaar syn match	vimSynError	contained	"\i\+"
388071d4279SBram Moolenaar syn match	vimSynError	contained	"\i\+="	nextgroup=vimGroupList
389cfbc5ee4SBram Moolenaarendif
390071d4279SBram Moolenaarsyn match	vimSynContains	contained	"\<contain\(s\|edin\)="	nextgroup=vimGroupList
391071d4279SBram Moolenaarsyn match	vimSynKeyContainedin	contained	"\<containedin="	nextgroup=vimGroupList
392071d4279SBram Moolenaarsyn match	vimSynNextgroup	contained	"nextgroup="	nextgroup=vimGroupList
393071d4279SBram Moolenaar
394071d4279SBram Moolenaarsyn match	vimSyntax	"\<sy\%[ntax]\>"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
395071d4279SBram Moolenaarsyn match	vimAuSyntax	contained	"\s+sy\%[ntax]"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
396d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSyntax
397071d4279SBram Moolenaar
398cfbc5ee4SBram Moolenaar" Syntax: case {{{2
399071d4279SBram Moolenaarsyn keyword	vimSynType	contained	case	skipwhite nextgroup=vimSynCase,vimSynCaseError
4006be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
401071d4279SBram Moolenaar syn match	vimSynCaseError	contained	"\i\+"
402cfbc5ee4SBram Moolenaarendif
403071d4279SBram Moolenaarsyn keyword	vimSynCase	contained	ignore	match
404071d4279SBram Moolenaar
405cfbc5ee4SBram Moolenaar" Syntax: clear {{{2
406071d4279SBram Moolenaarsyn keyword	vimSynType	contained	clear	skipwhite nextgroup=vimGroupList
407071d4279SBram Moolenaar
408cfbc5ee4SBram Moolenaar" Syntax: cluster {{{2
409071d4279SBram Moolenaarsyn keyword	vimSynType	contained	cluster	skipwhite nextgroup=vimClusterName
410e2719096SBram Moolenaarsyn region	vimClusterName	contained	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
411071d4279SBram Moolenaarsyn match	vimGroupAdd	contained	"add="	nextgroup=vimGroupList
412071d4279SBram Moolenaarsyn match	vimGroupRem	contained	"remove="	nextgroup=vimGroupList
413d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSynType,vimGroupAdd,vimGroupRem
414071d4279SBram Moolenaar
415cfbc5ee4SBram Moolenaar" Syntax: include {{{2
416071d4279SBram Moolenaarsyn keyword	vimSynType	contained	include	skipwhite nextgroup=vimGroupList
417d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSynType
418071d4279SBram Moolenaar
419cfbc5ee4SBram Moolenaar" Syntax: keyword {{{2
420071d4279SBram Moolenaarsyn cluster	vimSynKeyGroup	contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
421071d4279SBram Moolenaarsyn keyword	vimSynType	contained	keyword	skipwhite nextgroup=vimSynKeyRegion
422e2719096SBram Moolenaarsyn region	vimSynKeyRegion	contained oneline keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
423071d4279SBram Moolenaarsyn match	vimSynKeyOpt	contained	"\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
424d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSynType
425071d4279SBram Moolenaar
426cfbc5ee4SBram Moolenaar" Syntax: match {{{2
427071d4279SBram Moolenaarsyn cluster	vimSynMtchGroup	contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
428071d4279SBram Moolenaarsyn keyword	vimSynType	contained	match	skipwhite nextgroup=vimSynMatchRegion
429e2719096SBram Moolenaarsyn region	vimSynMatchRegion	contained keepend	matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
430071d4279SBram Moolenaarsyn match	vimSynMtchOpt	contained	"\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
431071d4279SBram Moolenaarif has("conceal")
432e2719096SBram Moolenaar syn match	vimSynMtchOpt	contained	"\<cchar="	nextgroup=VimSynMtchCchar
4335c73622aSBram Moolenaar syn match	vimSynMtchCchar	contained	"\S"
434071d4279SBram Moolenaarendif
435d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSynMtchGroup
436071d4279SBram Moolenaar
437cfbc5ee4SBram Moolenaar" Syntax: off and on {{{2
438071d4279SBram Moolenaarsyn keyword	vimSynType	contained	enable	list	manual	off	on	reset
439071d4279SBram Moolenaar
440cfbc5ee4SBram Moolenaar" Syntax: region {{{2
441071d4279SBram Moolenaarsyn cluster	vimSynRegPatGroup	contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
442071d4279SBram Moolenaarsyn cluster	vimSynRegGroup	contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
443071d4279SBram Moolenaarsyn keyword	vimSynType	contained	region	skipwhite nextgroup=vimSynRegion
444e2719096SBram Moolenaarsyn region	vimSynRegion	contained keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
445071d4279SBram Moolenaarsyn match	vimSynRegOpt	contained	"\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
446071d4279SBram Moolenaarsyn match	vimSynReg	contained	"\(start\|skip\|end\)="he=e-1	nextgroup=vimSynRegPat
447071d4279SBram Moolenaarsyn match	vimSynMtchGrp	contained	"matchgroup="	nextgroup=vimGroup,vimHLGroup
448071d4279SBram Moolenaarsyn region	vimSynRegPat	contained extend	start="\z([-`~!@#$%^&*_=+;:'",./?]\)"  skip="\\\\\|\\\z1"  end="\z1"  contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
449071d4279SBram Moolenaarsyn match	vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
450071d4279SBram Moolenaarsyn match	vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
451071d4279SBram Moolenaarsyn match	vimSynPatMod	contained	"lc=\d\+"
452071d4279SBram Moolenaarsyn match	vimSynPatMod	contained	"lc=\d\+," nextgroup=vimSynPatMod
453071d4279SBram Moolenaarsyn region	vimSynPatRange	contained	start="\["	skip="\\\\\|\\]"   end="]"
454071d4279SBram Moolenaarsyn match	vimSynNotPatRange	contained	"\\\\\|\\\["
455071d4279SBram Moolenaarsyn match	vimMtchComment	contained	'"[^"]\+$'
456d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimSynType
457071d4279SBram Moolenaar
458cfbc5ee4SBram Moolenaar" Syntax: sync {{{2
459071d4279SBram Moolenaar" ============
460df177f67SBram Moolenaarsyn keyword vimSynType	contained	sync	skipwhite	nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
4616be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
462071d4279SBram Moolenaar syn match	vimSyncError	contained	"\i\+"
463cfbc5ee4SBram Moolenaarendif
464071d4279SBram Moolenaarsyn keyword	vimSyncC	contained	ccomment	clear	fromstart
465071d4279SBram Moolenaarsyn keyword	vimSyncMatch	contained	match	skipwhite	nextgroup=vimSyncGroupName
466071d4279SBram Moolenaarsyn keyword	vimSyncRegion	contained	region	skipwhite	nextgroup=vimSynReg
467df177f67SBram Moolenaarsyn match	vimSyncLinebreak	contained	"\<linebreaks="	skipwhite	nextgroup=vimNumber
468071d4279SBram Moolenaarsyn keyword	vimSyncLinecont	contained	linecont	skipwhite	nextgroup=vimSynRegPat
469071d4279SBram Moolenaarsyn match	vimSyncLines	contained	"\(min\|max\)\=lines="	nextgroup=vimNumber
470e2719096SBram Moolenaarsyn match	vimSyncGroupName	contained	"\k\+"	skipwhite	nextgroup=vimSyncKey
471071d4279SBram Moolenaarsyn match	vimSyncKey	contained	"\<groupthere\|grouphere\>"	skipwhite nextgroup=vimSyncGroup
472e2719096SBram Moolenaarsyn match	vimSyncGroup	contained	"\k\+"	skipwhite	nextgroup=vimSynRegPat,vimSyncNone
473071d4279SBram Moolenaarsyn keyword	vimSyncNone	contained	NONE
474071d4279SBram Moolenaar
475cfbc5ee4SBram Moolenaar" Additional IsCommand, here by reasons of precedence {{{2
476071d4279SBram Moolenaar" ====================
477071d4279SBram Moolenaarsyn match	vimIsCommand	"<Bar>\s*\a\+"	transparent contains=vimCommand,vimNotation
478071d4279SBram Moolenaar
479cfbc5ee4SBram Moolenaar" Highlighting {{{2
480071d4279SBram Moolenaar" ============
481071d4279SBram Moolenaarsyn cluster	vimHighlightCluster		contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
4826be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
4836be7f873SBram Moolenaar syn match	vimHiCtermError	contained	"[^0-9]\i*"
4846be7f873SBram Moolenaarendif
485071d4279SBram Moolenaarsyn match	vimHighlight	"\<hi\%[ghlight]\>"	skipwhite nextgroup=vimHiBang,@vimHighlightCluster
486071d4279SBram Moolenaarsyn match	vimHiBang	contained	"!"	skipwhite nextgroup=@vimHighlightCluster
487071d4279SBram Moolenaar
488071d4279SBram Moolenaarsyn match	vimHiGroup	contained	"\i\+"
489071d4279SBram Moolenaarsyn case ignore
4904770d09aSBram Moolenaarsyn keyword	vimHiAttrib	contained	none bold inverse italic reverse standout underline undercurl
491071d4279SBram Moolenaarsyn keyword	vimFgBgAttrib	contained	none bg background fg foreground
492071d4279SBram Moolenaarsyn case match
493071d4279SBram Moolenaarsyn match	vimHiAttribList	contained	"\i\+"	contains=vimHiAttrib
494071d4279SBram Moolenaarsyn match	vimHiAttribList	contained	"\i\+,"he=e-1	contains=vimHiAttrib nextgroup=vimHiAttribList
495071d4279SBram Moolenaarsyn case ignore
4966be7f873SBram 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
4976be7f873SBram Moolenaarsyn match	vimHiCtermColor	contained	"\<color\d\{1,3}\>"
498071d4279SBram Moolenaar
499071d4279SBram Moolenaarsyn case match
500071d4279SBram Moolenaarsyn match	vimHiFontname	contained	"[a-zA-Z\-*]\+"
501071d4279SBram Moolenaarsyn match	vimHiGuiFontname	contained	"'[a-zA-Z\-* ]\+'"
502071d4279SBram Moolenaarsyn match	vimHiGuiRgb	contained	"#\x\{6}"
503071d4279SBram Moolenaar
504cfbc5ee4SBram Moolenaar" Highlighting: hi group key=arg ... {{{2
5055c73622aSBram Moolenaarsyn cluster	vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
506071d4279SBram Moolenaarsyn region	vimHiKeyList	contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||"	contains=@vimHiCluster
5076be7f873SBram Moolenaarif !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
508071d4279SBram Moolenaar syn match	vimHiKeyError	contained	"\i\+="he=e-1
509cfbc5ee4SBram Moolenaarendif
510071d4279SBram Moolenaarsyn match	vimHiTerm	contained	"\cterm="he=e-1		nextgroup=vimHiAttribList
511071d4279SBram Moolenaarsyn match	vimHiStartStop	contained	"\c\(start\|stop\)="he=e-1	nextgroup=vimHiTermcap,vimOption
512071d4279SBram Moolenaarsyn match	vimHiCTerm	contained	"\ccterm="he=e-1		nextgroup=vimHiAttribList
513e2719096SBram Moolenaarsyn match	vimHiCtermFgBg	contained	"\ccterm[fb]g="he=e-1	nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
514071d4279SBram Moolenaarsyn match	vimHiGui	contained	"\cgui="he=e-1		nextgroup=vimHiAttribList
515071d4279SBram Moolenaarsyn match	vimHiGuiFont	contained	"\cfont="he=e-1		nextgroup=vimHiFontname
5164770d09aSBram Moolenaarsyn match	vimHiGuiFgBg	contained	"\cgui\%([fb]g\|sp\)="he=e-1	nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
517071d4279SBram Moolenaarsyn match	vimHiTermcap	contained	"\S\+"		contains=vimNotation
518071d4279SBram Moolenaar
519cfbc5ee4SBram Moolenaar" Highlight: clear {{{2
520071d4279SBram Moolenaarsyn keyword	vimHiClear	contained	clear	nextgroup=vimHiGroup
521071d4279SBram Moolenaar
522cfbc5ee4SBram Moolenaar" Highlight: link {{{2
523e2719096SBram Moolenaarsyn region	vimHiLink	contained oneline matchgroup=vimCommand start="\<\(def\%[ault]\s\+\)\=link\>\|\<def\>" end="$"	contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
524d960d76dSBram Moolenaarsyn cluster vimFuncBodyList add=vimHiLink
525071d4279SBram Moolenaar
526cfbc5ee4SBram Moolenaar" Control Characters {{{2
527071d4279SBram Moolenaar" ==================
528071d4279SBram Moolenaarsyn match	vimCtrlChar	"[--]"
529071d4279SBram Moolenaar
530cfbc5ee4SBram Moolenaar" Beginners - Patterns that involve ^ {{{2
531071d4279SBram Moolenaar" =========
532071d4279SBram Moolenaarsyn match	vimLineComment	+^[ \t:]*".*$+	contains=@vimCommentGroup,vimCommentString,vimCommentTitle
533ff1d0d4cSBram Moolenaarsyn match	vimCommentTitle	'"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
534071d4279SBram Moolenaarsyn match	vimContinue	"^\s*\\"
535071d4279SBram Moolenaarsyn region	vimString	start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
536071d4279SBram Moolenaarsyn match	vimCommentTitleLeader	'"\s\+'ms=s+1	contained
537071d4279SBram Moolenaar
53818144c84SBram Moolenaar" Searches And Globals: {{{2
53918144c84SBram Moolenaar" ====================
540e2f98b95SBram Moolenaarsyn match	vimSearch	'^\s*[/?].*'		contains=vimSearchDelim
541e2f98b95SBram Moolenaarsyn match	vimSearchDelim	'^\s*\zs[/?]\|[/?]$'	contained
542*9da7ff70SBram Moolenaarsyn region	vimGlobal	matchgroup=Statement start='\<g\%[lobal]!\=/'  skip='\\.' end='/'	skipwhite nextgroup=vimSubst
543*9da7ff70SBram Moolenaarsyn region	vimGlobal	matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/'	skipwhite nextgroup=vimSubst
544e2f98b95SBram Moolenaar
545cfbc5ee4SBram Moolenaar" Scripts  : perl,ruby : Benoit Cerrina {{{2
546071d4279SBram Moolenaar" =======    python,tcl: Johannes Zellner
5474b22cdb0SBram Moolenaar"            lua
548071d4279SBram Moolenaar
5493577c6faSBram Moolenaar" Allows users to specify the type of embedded script highlighting
5503577c6faSBram Moolenaar" they want:  (perl/python/ruby/tcl support)
5513577c6faSBram Moolenaar"   g:vimsyn_embed == 0   : don't embed any scripts
552a6878375SBram Moolenaar"   g:vimsyn_embed ~= 'l' : embed lua      (but only if vim supports it)
553a6878375SBram Moolenaar"   g:vimsyn_embed ~= 'm' : embed mzscheme (but only if vim supports it)
554a6878375SBram Moolenaar"   g:vimsyn_embed ~= 'p' : embed perl     (but only if vim supports it)
555a6878375SBram Moolenaar"   g:vimsyn_embed ~= 'P' : embed python   (but only if vim supports it)
556a6878375SBram Moolenaar"   g:vimsyn_embed ~= 'r' : embed ruby     (but only if vim supports it)
557a6878375SBram Moolenaar"   g:vimsyn_embed ~= 't' : embed tcl      (but only if vim supports it)
5587cba6c06SBram Moolenaarif !exists("g:vimsyn_embed")
559a6878375SBram Moolenaar let g:vimsyn_embed= "lmpPr"
5607cba6c06SBram Moolenaarendif
561071d4279SBram Moolenaar
5624b22cdb0SBram Moolenaar" [-- lua --] {{{3
563adc2182cSBram Moolenaarlet s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
5644b22cdb0SBram Moolenaarif !filereadable(s:luapath)
565*9da7ff70SBram Moolenaar for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
566*9da7ff70SBram Moolenaar  if filereadable(fnameescape(s:luapath))
567*9da7ff70SBram Moolenaar   let s:luapath= fnameescape(s:luapath)
568*9da7ff70SBram Moolenaar   break
569*9da7ff70SBram Moolenaar  endif
570*9da7ff70SBram Moolenaar endfor
5714b22cdb0SBram Moolenaarendif
572a6878375SBram Moolenaarif (g:vimsyn_embed =~ 'l' && has("lua")) && filereadable(s:luapath)
5734b22cdb0SBram Moolenaar unlet! b:current_syntax
5744b22cdb0SBram Moolenaar exe "syn include @vimLuaScript ".s:luapath
5754b22cdb0SBram Moolenaar if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'l'
5764b22cdb0SBram Moolenaar  syn region vimLuaRegion fold matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimLuaScript
5774b22cdb0SBram Moolenaar  syn region vimLuaRegion fold matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+		contains=@vimLuaScript
5784b22cdb0SBram Moolenaar else
5794b22cdb0SBram Moolenaar  syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimLuaScript
5804b22cdb0SBram Moolenaar  syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+		contains=@vimLuaScript
5814b22cdb0SBram Moolenaar endif
5824b22cdb0SBram Moolenaar syn cluster vimFuncBodyList	add=vimLuaRegion
5834b22cdb0SBram Moolenaarelse
5844b22cdb0SBram Moolenaar syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
5854b22cdb0SBram Moolenaar syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
5864b22cdb0SBram Moolenaarendif
5874b22cdb0SBram Moolenaarunlet s:luapath
5884b22cdb0SBram Moolenaar
589cfbc5ee4SBram Moolenaar" [-- perl --] {{{3
590adc2182cSBram Moolenaarlet s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
5915c73622aSBram Moolenaarif !filereadable(s:perlpath)
592*9da7ff70SBram Moolenaar for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
593*9da7ff70SBram Moolenaar  if filereadable(fnameescape(s:perlpath))
594*9da7ff70SBram Moolenaar   let s:perlpath= fnameescape(s:perlpath)
595*9da7ff70SBram Moolenaar   break
596*9da7ff70SBram Moolenaar  endif
597*9da7ff70SBram Moolenaar endfor
5985c73622aSBram Moolenaarendif
599a6878375SBram Moolenaarif (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(s:perlpath)
600071d4279SBram Moolenaar unlet! b:current_syntax
6015c73622aSBram Moolenaar exe "syn include @vimPerlScript ".s:perlpath
6023577c6faSBram Moolenaar if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'p'
6033577c6faSBram Moolenaar  syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPerlScript
6043577c6faSBram Moolenaar  syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+	contains=@vimPerlScript
6053577c6faSBram Moolenaar else
606071d4279SBram Moolenaar  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPerlScript
607071d4279SBram Moolenaar  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+		contains=@vimPerlScript
608071d4279SBram Moolenaar endif
6095c73622aSBram Moolenaar syn cluster vimFuncBodyList	add=vimPerlRegion
610c236c16dSBram Moolenaarelse
611c236c16dSBram Moolenaar syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
612c236c16dSBram Moolenaar syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
6133577c6faSBram Moolenaarendif
6145c73622aSBram Moolenaarunlet s:perlpath
615071d4279SBram Moolenaar
616cfbc5ee4SBram Moolenaar" [-- ruby --] {{{3
617adc2182cSBram Moolenaarlet s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
6185c73622aSBram Moolenaarif !filereadable(s:rubypath)
619*9da7ff70SBram Moolenaar for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
620*9da7ff70SBram Moolenaar  if filereadable(fnameescape(s:rubypath))
621*9da7ff70SBram Moolenaar   let s:rubypath= fnameescape(s:rubypath)
622*9da7ff70SBram Moolenaar   break
623*9da7ff70SBram Moolenaar  endif
624*9da7ff70SBram Moolenaar endfor
6255c73622aSBram Moolenaarendif
626a6878375SBram Moolenaarif (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(s:rubypath)
627071d4279SBram Moolenaar unlet! b:current_syntax
6285c73622aSBram Moolenaar exe "syn include @vimRubyScript ".s:rubypath
6293577c6faSBram Moolenaar if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'r'
6303577c6faSBram Moolenaar  syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimRubyScript
6313577c6faSBram Moolenaar else
632c236c16dSBram Moolenaar  syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimRubyScript
6333577c6faSBram Moolenaar endif
634071d4279SBram Moolenaar syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+		contains=@vimRubyScript
6355c73622aSBram Moolenaar syn cluster vimFuncBodyList	add=vimRubyRegion
636c236c16dSBram Moolenaarelse
637c236c16dSBram Moolenaar syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
638c236c16dSBram Moolenaar syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
639071d4279SBram Moolenaarendif
6405c73622aSBram Moolenaarunlet s:rubypath
641071d4279SBram Moolenaar
642cfbc5ee4SBram Moolenaar" [-- python --] {{{3
643adc2182cSBram Moolenaarlet s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
6445c73622aSBram Moolenaarif !filereadable(s:pythonpath)
645*9da7ff70SBram Moolenaar for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
646*9da7ff70SBram Moolenaar  if filereadable(fnameescape(s:pythonpath))
647*9da7ff70SBram Moolenaar   let s:pythonpath= fnameescape(s:pythonpath)
648*9da7ff70SBram Moolenaar   break
6495c73622aSBram Moolenaar  endif
650*9da7ff70SBram Moolenaar endfor
651*9da7ff70SBram Moolenaarendif
652*9da7ff70SBram Moolenaarif g:vimsyn_embed =~ 'P' && (has("python") || has("python3")) && filereadable(s:pythonpath)
653071d4279SBram Moolenaar unlet! b:current_syntax
6545c73622aSBram Moolenaar exe "syn include @vimPythonScript ".s:pythonpath
6553577c6faSBram Moolenaar if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'P'
656fa01c39dSBram Moolenaar  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPythonScript
657fa01c39dSBram Moolenaar  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+		contains=@vimPythonScript
658e2719096SBram Moolenaar  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPythonScript
659e2719096SBram Moolenaar  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+		contains=@vimPythonScript
6603577c6faSBram Moolenaar else
661fa01c39dSBram Moolenaar  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+		contains=@vimPythonScript
662fa01c39dSBram Moolenaar  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+		contains=@vimPythonScript
663e2719096SBram Moolenaar  syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\z(.*\)$+ end=+^\z1$+		contains=@vimPythonScript
664e2719096SBram Moolenaar  syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+		contains=@vimPythonScript
665071d4279SBram Moolenaar endif
6665c73622aSBram Moolenaar syn cluster vimFuncBodyList	add=vimPythonRegion
667c236c16dSBram Moolenaarelse
668fa01c39dSBram Moolenaar syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
669fa01c39dSBram Moolenaar syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
670e2719096SBram Moolenaar syn region vimEmbedError start=+Py\%[thon]2or3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
671e2719096SBram Moolenaar syn region vimEmbedError start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+
6723577c6faSBram Moolenaarendif
6735c73622aSBram Moolenaarunlet s:pythonpath
674071d4279SBram Moolenaar
675cfbc5ee4SBram Moolenaar" [-- tcl --] {{{3
676a6878375SBram Moolenaarif has("win32") || has("win95") || has("win64") || has("win16")
677a6878375SBram Moolenaar " apparently has("tcl") has been hanging vim on some windows systems with cygwin
678a6878375SBram Moolenaar let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
679a6878375SBram Moolenaarelse
680a6878375SBram Moolenaar let s:trytcl= 1
681a6878375SBram Moolenaarendif
682a6878375SBram Moolenaarif s:trytcl
683adc2182cSBram Moolenaar let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
6845c73622aSBram Moolenaar if !filereadable(s:tclpath)
685*9da7ff70SBram Moolenaar  for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
686*9da7ff70SBram Moolenaar   if filereadable(fnameescape(s:tclpath))
687*9da7ff70SBram Moolenaar    let s:tclpath= fnameescape(s:tclpath)
688*9da7ff70SBram Moolenaar    break
689*9da7ff70SBram Moolenaar   endif
690*9da7ff70SBram Moolenaar  endfor
6915c73622aSBram Moolenaar endif
692a6878375SBram Moolenaar if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(s:tclpath)
693071d4279SBram Moolenaar  unlet! b:current_syntax
6945c73622aSBram Moolenaar  exe "syn include @vimTclScript ".s:tclpath
6953577c6faSBram Moolenaar  if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 't'
6963577c6faSBram Moolenaar   syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimTclScript
6973577c6faSBram Moolenaar   syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+	contains=@vimTclScript
6983577c6faSBram Moolenaar  else
699071d4279SBram Moolenaar   syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimTclScript
700071d4279SBram Moolenaar   syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+		contains=@vimTclScript
701071d4279SBram Moolenaar  endif
7025c73622aSBram Moolenaar  syn cluster vimFuncBodyList	add=vimTclScript
703c236c16dSBram Moolenaar else
704c236c16dSBram Moolenaar  syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
705c236c16dSBram Moolenaar  syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
7063577c6faSBram Moolenaar endif
7075c73622aSBram Moolenaar unlet s:tclpath
708a6878375SBram Moolenaarelse
709a6878375SBram Moolenaar syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
710a6878375SBram Moolenaar syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
711a6878375SBram Moolenaarendif
712a6878375SBram Moolenaarunlet s:trytcl
713071d4279SBram Moolenaar
7148299df96SBram Moolenaar" [-- mzscheme --] {{{3
715adc2182cSBram Moolenaarlet s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
7165c73622aSBram Moolenaarif !filereadable(s:mzschemepath)
717*9da7ff70SBram Moolenaar for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
718*9da7ff70SBram Moolenaar  if filereadable(fnameescape(s:mzschemepath))
719*9da7ff70SBram Moolenaar   let s:mzschemepath= fnameescape(s:mzschemepath)
720*9da7ff70SBram Moolenaar   break
721*9da7ff70SBram Moolenaar  endif
722*9da7ff70SBram Moolenaar endfor
7235c73622aSBram Moolenaarendif
7245c73622aSBram Moolenaarif (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
7258299df96SBram Moolenaar unlet! b:current_syntax
7268299df96SBram Moolenaar let iskKeep= &isk
7275c73622aSBram Moolenaar exe "syn include @vimMzSchemeScript ".s:mzschemepath
7288299df96SBram Moolenaar let &isk= iskKeep
729c236c16dSBram Moolenaar if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'm'
7303577c6faSBram Moolenaar  syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimMzSchemeScript
7313577c6faSBram Moolenaar  syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+		contains=@vimMzSchemeScript
7323577c6faSBram Moolenaar else
7338299df96SBram Moolenaar  syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+		contains=@vimMzSchemeScript
7348299df96SBram Moolenaar  syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+		contains=@vimMzSchemeScript
7358299df96SBram Moolenaar endif
7365c73622aSBram Moolenaar syn cluster vimFuncBodyList	add=vimMzSchemeRegion
737c236c16dSBram Moolenaarelse
738c236c16dSBram Moolenaar syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
739c236c16dSBram Moolenaar syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
7403577c6faSBram Moolenaarendif
7415c73622aSBram Moolenaarunlet s:mzschemepath
7428299df96SBram Moolenaar
743cfbc5ee4SBram Moolenaar" Synchronize (speed) {{{2
744071d4279SBram Moolenaar"============
7453577c6faSBram Moolenaarif exists("g:vimsyn_minlines")
7463577c6faSBram Moolenaar exe "syn sync minlines=".g:vimsyn_minlines
747071d4279SBram Moolenaarendif
7483577c6faSBram Moolenaarif exists("g:vimsyn_maxlines")
7493577c6faSBram Moolenaar exe "syn sync maxlines=".g:vimsyn_maxlines
750071d4279SBram Moolenaarelse
751071d4279SBram Moolenaar syn sync maxlines=60
752071d4279SBram Moolenaarendif
753071d4279SBram Moolenaarsyn sync linecont	"^\s\+\\"
754071d4279SBram Moolenaarsyn sync match vimAugroupSyncA	groupthere NONE	"\<aug\%[roup]\>\s\+[eE][nN][dD]"
755071d4279SBram Moolenaar
7565c73622aSBram Moolenaar" ====================
757cfbc5ee4SBram Moolenaar" Highlighting Settings {{{2
758071d4279SBram Moolenaar" ====================
759071d4279SBram Moolenaar
760e2719096SBram Moolenaarhi def link vimSubst1	vimSubst
761e2719096SBram Moolenaarhi def link vimBehaveModel	vimBehave
762071d4279SBram Moolenaar
7633577c6faSBram Moolenaarif !exists("g:vimsyn_noerror")
764cfbc5ee4SBram Moolenaar hi def link vimBehaveError	vimError
765cfbc5ee4SBram Moolenaar hi def link vimCollClassErr	vimError
766cfbc5ee4SBram Moolenaar hi def link vimErrSetting	vimError
767c236c16dSBram Moolenaar hi def link vimEmbedError	vimError
768cfbc5ee4SBram Moolenaar hi def link vimFTError	vimError
769cfbc5ee4SBram Moolenaar hi def link vimFunctionError	vimError
7708299df96SBram Moolenaar hi def link vimFunc         	vimError
771cfbc5ee4SBram Moolenaar hi def link vimHiAttribList	vimError
772cfbc5ee4SBram Moolenaar hi def link vimHiCtermError	vimError
773cfbc5ee4SBram Moolenaar hi def link vimHiKeyError	vimError
774cfbc5ee4SBram Moolenaar hi def link vimKeyCodeError	vimError
775cfbc5ee4SBram Moolenaar hi def link vimMapModErr	vimError
776cfbc5ee4SBram Moolenaar hi def link vimSubstFlagErr	vimError
777cfbc5ee4SBram Moolenaar hi def link vimSynCaseError	vimError
7783577c6faSBram Moolenaar hi def link vimBufnrWarn	vimWarn
779cfbc5ee4SBram Moolenaarendif
780cfbc5ee4SBram Moolenaar
781e37d50a5SBram Moolenaarhi def link vimAbb	vimCommand
782cfbc5ee4SBram Moolenaarhi def link vimAddress	vimMark
783071d4279SBram Moolenaarhi def link vimAugroupKey	vimCommand
784071d4279SBram Moolenaarhi def link vimAutoCmdOpt	vimOption
785071d4279SBram Moolenaarhi def link vimAutoCmd	vimCommand
786071d4279SBram Moolenaarhi def link vimAutoSet	vimCommand
787071d4279SBram Moolenaarhi def link vimBehave	vimCommand
788071d4279SBram Moolenaarhi def link vimCommentString	vimString
789071d4279SBram Moolenaarhi def link vimCondHL	vimCommand
790071d4279SBram Moolenaarhi def link vimEchoHLNone	vimGroup
791071d4279SBram Moolenaarhi def link vimEchoHL	vimCommand
792071d4279SBram Moolenaarhi def link vimElseif	vimCondHL
793071d4279SBram Moolenaarhi def link vimFgBgAttrib	vimHiAttrib
794071d4279SBram Moolenaarhi def link vimFTCmd	vimCommand
795071d4279SBram Moolenaarhi def link vimFTOption	vimSynType
796071d4279SBram Moolenaarhi def link vimFuncKey	vimCommand
797071d4279SBram Moolenaarhi def link vimGroupAdd	vimSynOption
7986be7f873SBram Moolenaarhi def link vimGroupName	vimGroup
799071d4279SBram Moolenaarhi def link vimGroupRem	vimSynOption
8006be7f873SBram Moolenaarhi def link vimHiClear	vimHighlight
801071d4279SBram Moolenaarhi def link vimHiCtermFgBg	vimHiTerm
802071d4279SBram Moolenaarhi def link vimHiCTerm	vimHiTerm
803071d4279SBram Moolenaarhi def link vimHighlight	vimCommand
804071d4279SBram Moolenaarhi def link vimHiGroup	vimGroupName
805071d4279SBram Moolenaarhi def link vimHiGuiFgBg	vimHiTerm
806071d4279SBram Moolenaarhi def link vimHiGuiFont	vimHiTerm
807071d4279SBram Moolenaarhi def link vimHiGuiRgb	vimNumber
808071d4279SBram Moolenaarhi def link vimHiGui	vimHiTerm
809071d4279SBram Moolenaarhi def link vimHiStartStop	vimHiTerm
810071d4279SBram Moolenaarhi def link vimHLGroup	vimGroup
811071d4279SBram Moolenaarhi def link vimInsert	vimString
812071d4279SBram Moolenaarhi def link vimKeyCode	vimSpecFile
813071d4279SBram Moolenaarhi def link vimLet	vimCommand
814071d4279SBram Moolenaarhi def link vimLineComment	vimComment
815071d4279SBram Moolenaarhi def link vimMapBang	vimCommand
816071d4279SBram Moolenaarhi def link vimMapModKey	vimFuncSID
817071d4279SBram Moolenaarhi def link vimMapMod	vimBracket
818071d4279SBram Moolenaarhi def link vimMap	vimCommand
819071d4279SBram Moolenaarhi def link vimMarkNumber	vimNumber
820071d4279SBram Moolenaarhi def link vimMenuMod	vimMapMod
821071d4279SBram Moolenaarhi def link vimMenuNameMore	vimMenuName
822071d4279SBram Moolenaarhi def link vimMtchComment	vimComment
82305159a0cSBram Moolenaarhi def link vimNorm	vimCommand
8245c73622aSBram Moolenaarhi def link vimNotFunc	vimCommand
825071d4279SBram Moolenaarhi def link vimNotPatSep	vimString
826071d4279SBram Moolenaarhi def link vimPatSepErr	vimPatSep
8275c73622aSBram Moolenaarhi def link vimPatSepR	vimPatSep
828071d4279SBram Moolenaarhi def link vimPatSepZone	vimString
8295c73622aSBram Moolenaarhi def link vimPatSepZ	vimPatSep
830071d4279SBram Moolenaarhi def link vimPlainMark	vimMark
831071d4279SBram Moolenaarhi def link vimPlainRegister	vimRegister
832e2f98b95SBram Moolenaarhi def link vimSearch	vimString
833071d4279SBram Moolenaarhi def link vimSetMod	vimOption
834071d4279SBram Moolenaarhi def link vimSetString	vimString
835071d4279SBram Moolenaarhi def link vimSpecFileMod	vimSpecFile
836071d4279SBram Moolenaarhi def link vimStringCont	vimString
837071d4279SBram Moolenaarhi def link vimSubstTwoBS	vimString
838071d4279SBram Moolenaarhi def link vimSubst	vimCommand
839071d4279SBram Moolenaarhi def link vimSyncGroupName	vimGroupName
840071d4279SBram Moolenaarhi def link vimSyncGroup	vimGroupName
841071d4279SBram Moolenaarhi def link vimSynContains	vimSynOption
842071d4279SBram Moolenaarhi def link vimSynKeyContainedin	vimSynContains
843071d4279SBram Moolenaarhi def link vimSynKeyOpt	vimSynOption
844071d4279SBram Moolenaarhi def link vimSynMtchGrp	vimSynOption
845071d4279SBram Moolenaarhi def link vimSynMtchOpt	vimSynOption
846071d4279SBram Moolenaarhi def link vimSynNextgroup	vimSynOption
847071d4279SBram Moolenaarhi def link vimSynNotPatRange	vimSynRegPat
848071d4279SBram Moolenaarhi def link vimSynPatRange	vimString
849071d4279SBram Moolenaarhi def link vimSynRegOpt	vimSynOption
850071d4279SBram Moolenaarhi def link vimSynRegPat	vimString
851071d4279SBram Moolenaarhi def link vimSyntax	vimCommand
852071d4279SBram Moolenaarhi def link vimSynType	vimSpecial
8535c73622aSBram Moolenaarhi def link vimUnmap	vimMap
854071d4279SBram Moolenaarhi def link vimUserAttrbCmplt	vimSpecial
855071d4279SBram Moolenaarhi def link vimUserAttrbKey	vimOption
856071d4279SBram Moolenaarhi def link vimUserAttrb	vimSpecial
857ac7bd638SBram Moolenaarhi def link vimUserCommand	vimCommand
858e2719096SBram Moolenaar
859e2719096SBram Moolenaarhi def link vimAutoEvent	Type
860e2719096SBram Moolenaarhi def link vimBracket	Delimiter
861e2719096SBram Moolenaarhi def link vimCmplxRepeat	SpecialChar
862e2719096SBram Moolenaarhi def link vimCommand	Statement
863e2719096SBram Moolenaarhi def link vimComment	Comment
864e2719096SBram Moolenaarhi def link vimCommentTitle	PreProc
865e2719096SBram Moolenaarhi def link vimContinue	Special
866e2719096SBram Moolenaarhi def link vimCtrlChar	SpecialChar
867e2719096SBram Moolenaarhi def link vimElseIfErr	Error
868e2719096SBram Moolenaarhi def link vimEnvvar	PreProc
869e2719096SBram Moolenaarhi def link vimError	Error
870e2719096SBram Moolenaarhi def link vimFold	Folded
871e2719096SBram Moolenaarhi def link vimFuncName	Function
872e2719096SBram Moolenaarhi def link vimFuncSID	Special
873e2719096SBram Moolenaarhi def link vimFuncVar	Identifier
874e2719096SBram Moolenaarhi def link vimGroupSpecial	Special
875e2719096SBram Moolenaarhi def link vimGroup	Type
876e2719096SBram Moolenaarhi def link vimHiAttrib	PreProc
877e2719096SBram Moolenaarhi def link vimHiTerm	Type
878e2719096SBram Moolenaarhi def link vimHLMod	PreProc
879e2719096SBram Moolenaarhi def link vimKeyword	Statement
880e2719096SBram Moolenaarhi def link vimMark	Number
881e2719096SBram Moolenaarhi def link vimMenuName	PreProc
882e2719096SBram Moolenaarhi def link vimNotation	Special
883e2719096SBram Moolenaarhi def link vimNumber	Number
884e2719096SBram Moolenaarhi def link vimOperError	Error
885e2719096SBram Moolenaarhi def link vimOper	Operator
886e2719096SBram Moolenaarhi def link vimOption	PreProc
887e2719096SBram Moolenaarhi def link vimParenSep	Delimiter
888e2719096SBram Moolenaarhi def link vimPatSep	SpecialChar
889e2719096SBram Moolenaarhi def link vimPattern	Type
890e2719096SBram Moolenaarhi def link vimRegister	SpecialChar
891e2719096SBram Moolenaarhi def link vimScriptDelim	Comment
892e2719096SBram Moolenaarhi def link vimSearchDelim	Statement
893e2719096SBram Moolenaarhi def link vimSep	Delimiter
894e2719096SBram Moolenaarhi def link vimSetSep	Statement
895e2719096SBram Moolenaarhi def link vimSpecFile	Identifier
896e2719096SBram Moolenaarhi def link vimSpecial	Type
897e2719096SBram Moolenaarhi def link vimStatement	Statement
898e2719096SBram Moolenaarhi def link vimString	String
899e2719096SBram Moolenaarhi def link vimSubstDelim	Delimiter
900e2719096SBram Moolenaarhi def link vimSubstFlags	Special
901e2719096SBram Moolenaarhi def link vimSubstSubstr	SpecialChar
902e2719096SBram Moolenaarhi def link vimSynCaseError	Error
903e2719096SBram Moolenaarhi def link vimSynCase	Type
904e2719096SBram Moolenaarhi def link vimSyncC	Type
905e2719096SBram Moolenaarhi def link vimSyncError	Error
906e2719096SBram Moolenaarhi def link vimSyncKey	Type
907e2719096SBram Moolenaarhi def link vimSyncNone	Type
908e2719096SBram Moolenaarhi def link vimSynError	Error
909e2719096SBram Moolenaarhi def link vimSynOption	Special
910e2719096SBram Moolenaarhi def link vimSynReg	Type
911e2719096SBram Moolenaarhi def link vimTodo	Todo
912e2719096SBram Moolenaarhi def link vimUserAttrbCmpltFunc	Special
913e2719096SBram Moolenaarhi def link vimUserCmdError	Error
9145c73622aSBram Moolenaarhi def link vimUserFunc	Normal
9156be7f873SBram Moolenaarhi def link vimVar	Identifier
9163577c6faSBram Moolenaarhi def link vimWarn	WarningMsg
917071d4279SBram Moolenaar
918cfbc5ee4SBram Moolenaar" Current Syntax Variable: {{{2
919071d4279SBram Moolenaarlet b:current_syntax = "vim"
9206be7f873SBram Moolenaar
9216be7f873SBram Moolenaar" ---------------------------------------------------------------------
9226be7f873SBram Moolenaar" Cleanup: {{{1
9236be7f873SBram Moolenaarlet &cpo = s:keepcpo
9246be7f873SBram Moolenaarunlet s:keepcpo
925071d4279SBram Moolenaar" vim:ts=18  fdm=marker
926