blob: 5bfcd66060359949452cf7c1456b8286b3384e58 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaarc236c162008-07-13 17:41:49 +00002" Language: Vim 7.2 script
Bram Moolenaar071d4272004-06-13 20:20:40 +00003" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
Bram Moolenaare37d50a2008-08-06 17:06:04 +00004" Last Change: July 29, 2008
5" Version: 7.2-82
Bram Moolenaar071d4272004-06-13 20:20:40 +00006" Automatically generated keyword lists: {{{1
7
8" Quit when a syntax file was already loaded {{{2
9if exists("b:current_syntax")
10 finish
11endif
12
13" vimTodo: contains common special-notices for comments {{{2
14" Use the vimCommentGroup cluster to add your own.
Bram Moolenaar18144c82006-04-12 21:52:12 +000015syn keyword vimTodo contained COMBAK FIXME TODO XXX
Bram Moolenaar217ad922005-03-20 22:37:15 +000016syn cluster vimCommentGroup contains=vimTodo,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +000017
18" regular vim commands {{{2
Bram Moolenaare37d50a2008-08-06 17:06:04 +000019syn keyword vimCommand contained abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exu[sage] fin[d] foldc[lose] fu[nction] ha[rdcopy] helpt[ags] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lmapc[lear] lnf[ile] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] nu[mber] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sn[ext] snor[emap] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xm[ap] XMLent xnoremenu
20syn keyword vimCommand contained abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fini[sh] folddoc[losed] go[to] h[elp] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lnew[er] lNf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] smapc[lear] sN[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xmapc[lear] XMLns xunme
21syn keyword vimCommand contained al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fir[st] foldd[oopen] gr[ep] helpf[ind] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lne[xt] ln[oremap] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] sme sni[ff] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xme xn[oremap] xunmenu
22syn keyword vimCommand contained arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fix[del] foldo[pen] grepa[dd] helpg[rep] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lm[ap] lN[ext] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] smenu sno[magic] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] xmenu xnoreme y[ank]
23syn keyword vimCommand contained argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] exi[t] fina[lly] fo[ld] for
Bram Moolenaar071d4272004-06-13 20:20:40 +000024syn match vimCommand contained "\<z[-+^.=]"
25
26" vimOptions are caught only when contained in a vimSet {{{2
Bram Moolenaar3577c6f2008-06-24 21:16:56 +000027syn keyword vimOption contained acd ambiwidth arabicshape autowriteall backupdir bdlay binary breakat bufhidden cdpath cin cinwords columns completeopt cpo cscopetagorder csverb deco dictionary directory ed encoding errorfile exrc fdls fencs fileformats fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imak ims indentexpr is isp keywordprg lazyredraw lispwords ls makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc pastetoggle pexpr pmbfn printexpr pt readonly rightleft rtp sb scroll sect sessionoptions shellpipe shellxquote showbreak shq slm smd spc spf sr sta sts swapfile sxq tabpagemax tags tbis terse thesaurus titleold toolbariconsize tsr ttyfast tx ut verbosefile virtualedit wb wfw wildcharm winaltkeys winminwidth wmnu write
Bram Moolenaarc236c162008-07-13 17:41:49 +000028syn keyword vimOption contained ai ambw ari aw backupext beval biosk brk buflisted cedit cindent clipboard com confirm cpoptions cscopeverbose cuc def diff display edcompatible endofline errorformat fcl fdm fex filetype fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imc imsearch indentkeys isf isprint km lbr list lsp makeprg maxmem mh mmp more mouses mzq nuw opfunc patchexpr pfn popt printfont pumheight redrawtime rightleftcmd ru sbo scrollbind sections sft shellquote shiftround showcmd si sm sn spell spl srr stal su swapsync syn tabstop tagstack tbs textauto tildeop titlestring top ttimeout ttym uc vb vfile visualbell wc wh wildignore window winwidth wmw writeany
29syn keyword vimOption contained akm anti arshape awa backupskip bex bioskey browsedir buftype cf cink cmdheight comments consk cpt cspc cul define diffexpr dy ef eol esckeys fcs fdn ff fillchars foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imcmdline inc indk isfname joinspaces kmp lcs listchars lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchmode ph preserveindent printheader pvh remap rl ruf sbr scrolljump secure sh shellredir shiftwidth showfulltag sidescroll smartcase so spellcapcheck splitbelow ss startofline sua swb synmaxcol tag tal tenc textmode timeout tl tpm ttimeoutlen ttymouse ul vbs vi vop wcm whichwrap wildmenu winfixheight wiv wop writebackup
30syn keyword vimOption contained al antialias autochdir background balloondelay bexpr bk bs casemap cfu cinkeys cmdwinheight commentstring conskey cscopepathcomp csprg cursorcolumn delcombine diffopt ea efm ep et fdc fdo ffs fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imd include inex isi js kp linebreak lm lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa path pheader previewheight printmbcharset pvw report rlc ruler sc scrolloff sel shcf shellslash shm showmatch sidescrolloff smartindent softtabstop spellfile splitright ssl statusline suffixes swf syntax tagbsearch tb term textwidth timeoutlen tm tr ttm ttyscroll undolevels vdir viewdir wa wd wi wildmode winfixwidth wiw wrap writedelay
31syn keyword vimOption contained aleph ar autoindent backspace ballooneval bg bkc bsdir cb ch cino cmp compatible copyindent cscopeprg csqf cursorline dex digraph ead ei equalalways eventignore fde fdt fileencoding fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imdisable includeexpr inf isident key langmap lines lmap ma matchtime mco ml modeline mousefocus mousetime nrformats ofu para pdev pi previewwindow printmbfont qe restorescreen ro rulerformat scb scrollopt selection shell shelltemp shortmess showmode siso smarttab sol spelllang spr ssop stl suffixesadd switchbuf ta taglength tbi termbidi tf title to ts tty ttytype updatecount ve viewoptions wak weirdinvert wig wildoptions winheight wm wrapmargin ws
32syn keyword vimOption contained allowrevins arab autoread backup balloonexpr bh bl bsk ccv charconvert cinoptions cms complete cot cscopequickfix cst cwh dg dip eadirection ek equalprg ex fdi fen fileencodings flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imi incsearch infercase isk keymap langmenu linespace loadplugins macatsui maxcombine mef mls modelines mousehide mp nu omnifunc paragraphs penc pm printdevice printoptions quoteescape revins rs runtimepath scr scs selectmode shellcmdflag shelltype shortname showtabline sj smc sp spellsuggest sps st stmp sw sws tabline tagrelative tbidi termencoding tgst titlelen toolbar tsl ttybuiltin tw updatetime verbose viminfo warn wfh wildchar wim winminheight wmh wrapscan ww
33syn keyword vimOption contained altkeymap arabic autowrite backupcopy bdir bin bomb bt cd ci cinw co completefunc cp cscopetag csto debug dict dir eb enc errorbells expandtab fdl fenc fileformat fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatekey iminsert inde insertmode iskeyword keymodel laststatus lisp lpl magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste pex pmbcs printencoding prompt rdt ri
Bram Moolenaar071d4272004-06-13 20:20:40 +000034
35" vimOptions: These are the turn-off setting variants {{{2
Bram Moolenaar3577c6f2008-06-24 21:16:56 +000036syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscopeverbose nocuc nocursorline nodg nodisable noeb noedcompatible noendofline noequalalways noesckeys noex noexrc nofk nofoldenable nogdefault nohid nohk nohkmapp nohls noic noignorecase noimc noimd noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw noremap norevins norightleft 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 novisualbell nowarn noweirdinvert nowfw nowinfixheight nowiv nowrap nowrite nowritebackup
37syn keyword vimOption contained noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobiosk nobl nocf nocindent noconsk nocp nocst nocul nodeco nodiff noea noed noek noeol noerrorbells noet noexpandtab nofen nofkmap nogd noguipty nohidden nohkmap nohkp nohlsearch noicon noim noimcmdline noincsearch noinfercase nois nojs nolbr nolisp noloadplugins nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly norestorescreen nori norightleftcmd norlc 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 novb nowa nowb nowfh nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
38syn keyword vimOption contained noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobioskey nobomb noci nocompatible noconskey nocscopetag nocsverb nocursorcolumn nodelcombine nodigraph
Bram Moolenaar071d4272004-06-13 20:20:40 +000039
40" vimOptions: These are the invertible variants {{{2
Bram Moolenaar3577c6f2008-06-24 21:16:56 +000041syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbinary invbk invbuflisted invcin invconfirm invcopyindent invcscopeverbose invcuc invcursorline invdg invdisable inveb invedcompatible invendofline invequalalways invesckeys invex invexrc invfk invfoldenable invgdefault invhid invhk invhkmapp invhls invic invignorecase invimc invimd invinf invinsertmode invjoinspaces invlazyredraw invlinebreak invlist invlpl invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invremap invrevins invrightleft 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 invvisualbell invwarn invweirdinvert invwfw invwinfixheight invwiv invwrap invwrite invwritebackup
42syn keyword vimOption contained invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invbeval invbiosk invbl invcf invcindent invconsk invcp invcst invcul invdeco invdiff invea inved invek inveol inverrorbells invet invexpandtab invfen invfkmap invgd invguipty invhidden invhkmap invhkp invhlsearch invicon invim invimcmdline invincsearch invinfercase invis invjs invlbr invlisp invloadplugins invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invrestorescreen invri invrightleftcmd invrlc 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 invvb invwa invwb invwfh invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws
43syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbioskey invbomb invci invcompatible invconskey invcscopetag invcsverb invcursorcolumn invdelcombine invdigraph
Bram Moolenaar071d4272004-06-13 20:20:40 +000044
45" termcap codes (which can also be set) {{{2
Bram Moolenaar3577c6f2008-06-24 21:16:56 +000046syn keyword vimOption contained t_AB t_al t_bc t_ce t_cl t_Co t_cs 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_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xs t_ZH t_ZR
47syn keyword vimOption contained t_AF t_AL t_cd t_Ce t_cm
Bram Moolenaar071d4272004-06-13 20:20:40 +000048syn match vimOption contained "t_%1"
49syn match vimOption contained "t_#2"
50syn match vimOption contained "t_#4"
51syn match vimOption contained "t_@7"
52syn match vimOption contained "t_*7"
53syn match vimOption contained "t_&8"
54syn match vimOption contained "t_%i"
55syn match vimOption contained "t_k;"
56
57" unsupported settings: these are supported by vi but don't do anything in vim {{{2
Bram Moolenaarcd71fa32005-03-11 22:46:48 +000058syn keyword vimErrSetting contained hardtabs ht w1200 w300 w9600
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
Bram Moolenaar80a94a52006-02-23 21:26:58 +000060" AutoCmd Events {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +000061syn case ignore
Bram Moolenaarff1d0d42007-05-10 17:24:16 +000062syn 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 CmdwinEnter CmdwinLeave ColorScheme 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 InsertEnter InsertLeave MenuPopup QuickFixCmdPost QuickFixCmdPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabEnter TabLeave TermChanged TermResponse User UserGettingBored VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave
Bram Moolenaar071d4272004-06-13 20:20:40 +000063
64" Highlight commonly used Groupnames {{{2
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +000065syn 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000066
67" Default highlighting groups {{{2
Bram Moolenaar3b1ddfe2006-03-14 22:55:34 +000068syn keyword vimHLGroup contained Cursor CursorColumn CursorIM CursorLine 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
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000069syn match vimHLGroup contained "Conceal"
Bram Moolenaar071d4272004-06-13 20:20:40 +000070syn case match
71
72" Function Names {{{2
Bram Moolenaarc236c162008-07-13 17:41:49 +000073syn keyword vimFuncName contained abs argc atan bufexists bufname byte2line ceil cindent complete confirm count deepcopy diff_filler escape executable expr8 filereadable finddir floor foldclosed foldtext function getbufline getcharmod getcmdtype getfperm getftype getmatches getqflist gettabwinvar getwinposy glob has haslocaldir histadd histget hlexists hostname indent input inputlist inputsave insert islocked join len libcallnr line2byte localtime map mapcheck matchadd matchdelete matchlist max mkdir nextnonblank pathshorten prevnonblank pumvisible readfile reltimestr remote_foreground remote_read remove repeat reverse search searchpair searchpos serverlist setcmdpos setloclist setpos setreg setwinvar simplify sort spellbadword split str2float strftime string strpart strtrans substitute synIDattr synstack tabpagebuflist tabpagewinnr taglist tolower tr type virtcol winbufnr winheight winnr winrestview winwidth
74syn keyword vimFuncName contained add argidx browse buflisted bufnr byteidx changenr clearmatches complete_add copy cscope_connection delete diff_hlID eval exists extend filewritable findfile fnameescape foldclosedend foldtextresult garbagecollect getbufvar getcmdline getcwd getfsize getline getpid getreg getwinposx getwinvar globpath has_key hasmapto histdel histnr hlID iconv index inputdialog inputrestore inputsecret isdirectory items keys libcall line lispindent log10 maparg match matcharg matchend matchstr min mode nr2char pow printf range reltime remote_expr remote_peek remote_send rename resolve round searchdecl searchpairpos server2client setbufvar setline setmatches setqflist settabwinvar shellescape sin soundfold spellsuggest sqrt str2nr stridx strlen strridx submatch synID synIDtrans system tabpagenr tagfiles tempname toupper trunc values visualmode wincol winline winrestcmd winsaveview writefile
75syn keyword vimFuncName contained append argv browsedir bufloaded bufwinnr call char2nr col complete_check cos cursor did_filetype empty eventhandler expand feedkeys filter float2nr fnamemodify foldlevel foreground get getchar getcmdpos getfontname getftime getloclist getpos getregtype
Bram Moolenaar071d4272004-06-13 20:20:40 +000076
77"--- syntax above generated by mkvimvim ---
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000078" Special Vim Highlighting (not automatic) {{{1
Bram Moolenaar071d4272004-06-13 20:20:40 +000079
Bram Moolenaar3577c6f2008-06-24 21:16:56 +000080" Deprecated variable options {{{2
81if exists("g:vim_minlines")
82 let g:vimsyn_minlines= g:vim_minlines
83endif
84if exists("g:vim_maxlines")
85 let g:vimsyn_maxlines= g:vim_maxlines
86endif
87if exists("g:vimsyntax_noerror")
88 let g:vimsyn_noerror= g:vimsyntax_noerror
89endif
90
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000091" Numbers {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +000092" =======
93syn match vimNumber "\<\d\+\([lL]\|\.\d\+\)\="
94syn match vimNumber "-\d\+\([lL]\|\.\d\+\)\="
95syn match vimNumber "\<0[xX]\x\+"
96syn match vimNumber "#\x\{6}"
97
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000098" All vimCommands are contained by vimIsCommands. {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +000099syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000100syn match vimIsCommand "\<\h\w*\>" contains=vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101syn match vimVar "\<[bwglsav]:\K\k*\>"
102syn match vimVar contained "\<\K\k*\>"
Bram Moolenaar3b1ddfe2006-03-14 22:55:34 +0000103syn keyword vimCommand contained in
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000105" Insertions And Appends: insert append {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106" =======================
107syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$""
108syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$""
109syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$""
110
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000111" Behave! {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000112" =======
113syn match vimBehave "\<be\%[have]\>" skipwhite nextgroup=vimBehaveModel,vimBehaveError
114syn keyword vimBehaveModel contained mswin xterm
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000115if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000116 syn match vimBehaveError contained "[^ ]\+"
117endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000118
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000119" Filetypes {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000120" =========
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000121syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000122if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000123 syn match vimFTError contained "\I\i*"
124endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125syn keyword vimFTCmd contained filet[ype]
126syn keyword vimFTOption contained detect indent off on plugin
127
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000128" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000129" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
130syn cluster vimAugroupList contains=vimIsCommand,vimFunction,vimFunctionError,vimLineComment,vimSpecFile,vimOper,vimNumber,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000131if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'a'
132 syn region vimAugroup fold start="\<aug\%[roup]\>\s\+\K\k*" end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>" contains=vimAugroupKey,vimAutoCmd,@vimAugroupList keepend
133else
134 syn region vimAugroup start="\<aug\%[roup]\>\s\+\K\k*" end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>" contains=vimAugroupKey,vimAutoCmd,@vimAugroupList keepend
135endif
Bram Moolenaar3b1ddfe2006-03-14 22:55:34 +0000136syn match vimAugroup "aug\%[roup]!" contains=vimAugroupKey
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000137if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000138 syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
139endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000140syn keyword vimAugroupKey contained aug[roup]
141
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000142" Operators: {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000143" =========
Bram Moolenaarbfb2d402006-03-03 22:50:42 +0000144syn cluster vimOperGroup contains=vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000145syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
146syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile
Bram Moolenaar18144c82006-04-12 21:52:12 +0000147syn region vimOperParen oneline matchgroup=vimOper start="(" end=")" contains=@vimOperGroup
Bram Moolenaarc1e37902006-04-18 21:55:01 +0000148syn region vimOperParen oneline matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000149if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000150 syn match vimOperError ")"
151endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000152
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000153" Functions : Tag is provided for those who wish to highlight tagged functions {{{2
154" =========
155syn cluster vimFuncList contains=vimCommand,vimFuncKey,Tag,vimFuncSID
156syn cluster vimFuncBodyList contains=vimAddress,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimFunc,vimFunction,vimFunctionError,vimFuncVar,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUserCommand
157if !exists("g:vimsyn_noerror")
158 syn match vimFunctionError "\<fu\%[nction]!\=\s\+\zs\U\i\{-}\ze\s*(" contains=vimFuncKey,vimFuncBlank nextgroup=vimFuncBody
159endif
Bram Moolenaarc236c162008-07-13 17:41:49 +0000160syn match vimFunction "\<fu\%[nction]!\=\s\+\(\(<[sS][iI][dD]>\|[Ss]:\|\u\|\i\+#\)\i*\|\(g:\)\=\(\I\i*\.\)\+\I\i*\)\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000161if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f'
162 syn region vimFuncBody contained fold start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList
163else
164 syn region vimFuncBody contained start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList
165endif
166syn match vimFuncVar contained "a:\(\I\i*\|\d\+\)"
167syn match vimFuncSID contained "\c<sid>\|\<s:"
168syn keyword vimFuncKey contained fu[nction]
169syn match vimFuncBlank contained "\s\+"
170
171syn keyword vimPattern contained start skip end
172
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000173" Special Filenames, Modifiers, Extension Removal: {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000174" ===============================================
175syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst
176syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst
177syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst
178syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst
179syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst
180syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst
181syn match vimSpecFileMod "\(:[phtre]\)\+" contained
182
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000183" User-Specified Commands: {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000184" =======================
185syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFunction,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
186syn keyword vimUserCommand contained com[mand]
187syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserCommand,@vimUserCmdList
188syn match vimUserAttrb contained "-n\%[args]=[01*?+]" contains=vimUserAttrbKey,vimOper
189syn match vimUserAttrb contained "-com\%[plete]=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
190syn match vimUserAttrb contained "-ra\%[nge]\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
191syn match vimUserAttrb contained "-cou\%[nt]=\d\+" contains=vimNumber,vimOper,vimUserAttrbKey
192syn match vimUserAttrb contained "-bang\=\>" contains=vimOper,vimUserAttrbKey
193syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
194syn match vimUserAttrb contained "-re\%[gister]\>" contains=vimOper,vimUserAttrbKey
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000195if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000196 syn match vimUserCmdError contained "\S\+\>"
197endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000198syn case ignore
199syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000200syn keyword vimUserAttrbCmplt contained augroup buffer command dir environment event expression file function help highlight mapping menu option something tag tag_listfiles var
201syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
Bram Moolenaar9964e462007-05-05 17:54:07 +0000202syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204syn case match
205syn match vimUserAttrbCmplt contained "custom,\u\w*"
206
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000207" Lower Priority Comments: after some vim commands... {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000208" =======================
209syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
210syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
211syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
Bram Moolenaar4770d092006-01-12 23:22:24 +0000212syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000213
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000214" Environment Variables: {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000215" =====================
216syn match vimEnvvar "\$\I\i*"
217syn match vimEnvvar "\${\I\i*}"
218
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000219" In-String Specials: {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000220" Try to catch strings, if nothing else matches (therefore it must precede the others!)
221" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
Bram Moolenaard68071d2006-05-02 22:08:30 +0000222syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000223syn match vimPatSepErr contained "\\)"
224syn match vimPatSep contained "\\|"
Bram Moolenaar383f9bc2005-01-19 22:18:32 +0000225syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]" contains=@vimStringGroup
226syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
Bram Moolenaar071d4272004-06-13 20:20:40 +0000227syn match vimNotPatSep contained "\\\\"
Bram Moolenaar9964e462007-05-05 17:54:07 +0000228syn cluster vimStringGroup contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000229syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=@vimStringGroup
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000230syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000231syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup
232syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup
Bram Moolenaar071d4272004-06-13 20:20:40 +0000233syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup
234syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
235syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
236
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000237" Substitutions: {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000238" =============
239syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
240syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
241syn cluster vimSubstList add=vimCollection
242syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat
243syn match vimSubst "s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat contained
244syn match vimSubst "/\zss\%[ubstitute]\ze/" nextgroup=vimSubstPat
245syn match vimSubst1 contained "s\%[ubstitute]\>" nextgroup=vimSubstPat
246syn 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
247syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
248syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
249syn match vimCollClassErr contained "\[:.\{-\}:\]"
250syn match vimCollClass contained transparent "\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
251syn match vimSubstSubstr contained "\\z\=\d"
252syn match vimSubstTwoBS contained "\\\\"
Bram Moolenaara5792f52005-11-23 21:25:05 +0000253syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254syn match vimSubstFlags contained "[&cegiIpr]\+"
255
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000256" 'String': {{{2
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000257syn match vimString "[^(,]'[^']\{-}\zs'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000258
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000259" Marks, Registers, Addresses, Filters: {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000260syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst
261syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst
262syn match vimMark ",\zs'[<>]\ze" nextgroup=vimOper,vimMarkNumber,vimSubst
263syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst
264syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst
265syn match vimMarkNumber "[-+]\d\+" nextgroup=vimSubst contained contains=vimOper
266syn match vimPlainMark contained "'[a-zA-Z0-9]"
267
Bram Moolenaar9964e462007-05-05 17:54:07 +0000268syn match vimRegister '[^,;]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]'
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000269syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
270syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000271syn match vimRegister '@"'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000272syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
273
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000274syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
275syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000276
277syn match vimFilter contained "^!.\{-}\(|\|$\)" contains=vimSpecFile
278syn match vimFilter contained "\A!.\{-}\(|\|$\)"ms=s+1 contains=vimSpecFile
279
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000280" Complex repeats (:h complex-repeat) {{{2
Bram Moolenaar19a09a12005-03-04 23:39:37 +0000281"syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]'lc=1
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000282"syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\)'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000283
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000284" Set command and associated set-options (vimOptions) with comment {{{2
Bram Moolenaarc1e37902006-04-18 21:55:01 +0000285syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|set\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
Bram Moolenaar8b6144b2006-02-08 09:20:24 +0000286syn region vimSetEqual contained start="=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation oneline
Bram Moolenaar071d4272004-06-13 20:20:40 +0000287syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
288syn match vimSetSep contained "[,:]"
289syn match vimSetMod contained "&vim\|[!&]\|all&"
290
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000291" Let {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000292" ===
293syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar
294
Bram Moolenaare37d50a2008-08-06 17:06:04 +0000295" Abbreviations {{{2
296" =============
297syn keyword vimAbb ab[breviate] ca[bbrev] inorea[bbrev] cnorea[bbrev] norea[bbrev] ia[bbrev] skipwhite nextgroup=vimMapMod,vimMapLhs
298
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000299" Autocmd {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000300" =======
301syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
302syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
303syn match vimAutoCmdSfxList contained "\S*"
304syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
305
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000306" Echo and Execute -- prefer strings! {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000307" ================
308syn region vimEcho oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimString,varVar
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000309syn region vimExecute oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimIsCommand,vimString,vimOper,vimVar,vimNotation,vimOperParen
Bram Moolenaar071d4272004-06-13 20:20:40 +0000310syn match vimEchoHL "echohl\=" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
311syn case ignore
312syn keyword vimEchoHLNone none
313syn case match
314
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000315" Maps {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000316" ====
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000317syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
Bram Moolenaar9964e462007-05-05 17:54:07 +0000318syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] snor[emap] vm[ap] vn[oremap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000319syn keyword vimMap mapc[lear]
Bram Moolenaarb8a7b562006-02-01 21:47:16 +0000320syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
321syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs
Bram Moolenaar25e2c9e2006-04-27 21:40:34 +0000322syn match vimMapMod contained "\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
Bram Moolenaarb8a7b562006-02-01 21:47:16 +0000323syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend
324syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue
Bram Moolenaar071d4272004-06-13 20:20:40 +0000325syn case ignore
Bram Moolenaar25e2c9e2006-04-27 21:40:34 +0000326syn keyword vimMapModKey contained buffer expr leader localleader plug script sid silent unique
Bram Moolenaar071d4272004-06-13 20:20:40 +0000327syn case match
328
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000329" Menus {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000330" =====
331syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
332syn 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
333syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap
334syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName
335syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
336syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
337syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs
338syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand
339syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList
340
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000341" Angle-Bracket Notation (tnx to Michael Geddes) {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000342" ======================
343syn case ignore
Bram Moolenaar9964e462007-05-05 17:54:07 +0000344syn 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\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket
Bram Moolenaar071d4272004-06-13 20:20:40 +0000345syn match vimNotation "\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket
Bram Moolenaard68071d2006-05-02 22:08:30 +0000346syn match vimNotation "\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket
347syn match vimNotation '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
348syn match vimNotation '\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>' contains=vimBracket
349syn match vimNotation "\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket
Bram Moolenaar071d4272004-06-13 20:20:40 +0000350syn match vimBracket contained "[\\<>]"
351syn case match
352
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000353" User Function Highlighting {{{2
354" (following Gautam Iyer's suggestion)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000355" ==========================
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000356syn match vimFunc "\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute
357syn match vimUserFunc contained "\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation
Bram Moolenaar9964e462007-05-05 17:54:07 +0000358syn match vimNotFunc "\<if\>\|\<el\%[seif]\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000359
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000360" Errors And Warnings: {{{2
361" ====================
362if !exists("g:vimsyn_noerror")
363 syn match vimElseIfErr "\<else\s\+if\>"
364 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
365endif
366
367" Norm {{{2
Bram Moolenaar05159a02005-02-26 23:04:13 +0000368" ====
369syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
370syn match vimNormCmds contained ".*$"
371
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000372" Syntax {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000373"=======
374syn match vimGroupList contained "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep
375syn match vimGroupList contained "@\=[^ \t,]*," nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
376syn keyword vimGroupSpecial contained ALL ALLBUT
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000377if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000378 syn match vimSynError contained "\i\+"
379 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
380endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000381syn match vimSynContains contained "\<contain\(s\|edin\)=" nextgroup=vimGroupList
382syn match vimSynKeyContainedin contained "\<containedin=" nextgroup=vimGroupList
383syn match vimSynNextgroup contained "nextgroup=" nextgroup=vimGroupList
384
385syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
386syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
387
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000388" Syntax: case {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000389syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000390if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000391 syn match vimSynCaseError contained "\i\+"
392endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000393syn keyword vimSynCase contained ignore match
394
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000395" Syntax: clear {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000396syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
397
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000398" Syntax: cluster {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000399syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
400syn region vimClusterName contained matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
401syn match vimGroupAdd contained "add=" nextgroup=vimGroupList
402syn match vimGroupRem contained "remove=" nextgroup=vimGroupList
403
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000404" Syntax: include {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000405syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
406
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000407" Syntax: keyword {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000408syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
409syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000410syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
Bram Moolenaar071d4272004-06-13 20:20:40 +0000411syn match vimSynKeyOpt contained "\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
412
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000413" Syntax: match {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000414syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
415syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
416syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
417syn match vimSynMtchOpt contained "\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
418if has("conceal")
419 syn match vimSynMtchOpt contained "\<cchar=" nextgroup=VimSynMtchCchar
420 syn match vimSynMtchCchar contained "."
421endif
422
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000423" Syntax: off and on {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000424syn keyword vimSynType contained enable list manual off on reset
425
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000426" Syntax: region {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000427syn cluster vimSynRegPatGroup contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
428syn cluster vimSynRegGroup contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
429syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
430syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
431syn match vimSynRegOpt contained "\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
432syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat
433syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
434syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
435syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
436syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
437syn match vimSynPatMod contained "lc=\d\+"
438syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
439syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
440syn match vimSynNotPatRange contained "\\\\\|\\\["
441syn match vimMtchComment contained '"[^"]\+$'
442
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000443" Syntax: sync {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000444" ============
Bram Moolenaardf177f62005-02-22 08:39:57 +0000445syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000446if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000447 syn match vimSyncError contained "\i\+"
448endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000449syn keyword vimSyncC contained ccomment clear fromstart
450syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
451syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
Bram Moolenaardf177f62005-02-22 08:39:57 +0000452syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
Bram Moolenaar071d4272004-06-13 20:20:40 +0000453syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
454syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
455syn match vimSyncGroupName contained "\k\+" skipwhite nextgroup=vimSyncKey
456syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
457syn match vimSyncGroup contained "\k\+" skipwhite nextgroup=vimSynRegPat,vimSyncNone
458syn keyword vimSyncNone contained NONE
459
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000460" Additional IsCommand, here by reasons of precedence {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000461" ====================
462syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
463
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000464" Highlighting {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000465" ============
466syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
467syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
468syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster
469
470syn match vimHiGroup contained "\i\+"
471syn case ignore
Bram Moolenaar4770d092006-01-12 23:22:24 +0000472syn keyword vimHiAttrib contained none bold inverse italic reverse standout underline undercurl
Bram Moolenaar071d4272004-06-13 20:20:40 +0000473syn keyword vimFgBgAttrib contained none bg background fg foreground
474syn case match
475syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
476syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
477syn case ignore
478syn 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
479
480syn case match
481syn match vimHiFontname contained "[a-zA-Z\-*]\+"
482syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
483syn match vimHiGuiRgb contained "#\x\{6}"
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000484if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000485 syn match vimHiCtermError contained "[^0-9]\i*"
486endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000487
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000488" Highlighting: hi group key=arg ... {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000489syn cluster vimHiCluster contains=vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
490syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000491if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000492 syn match vimHiKeyError contained "\i\+="he=e-1
493endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000494syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
495syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
496syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
497syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
498syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
499syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
Bram Moolenaar4770d092006-01-12 23:22:24 +0000500syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
Bram Moolenaar071d4272004-06-13 20:20:40 +0000501syn match vimHiTermcap contained "\S\+" contains=vimNotation
502
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000503" Highlight: clear {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000504syn keyword vimHiClear contained clear nextgroup=vimHiGroup
505
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000506" Highlight: link {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000507syn region vimHiLink contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
508
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000509" Control Characters {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000510" ==================
511syn match vimCtrlChar "[- -]"
512
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000513" Beginners - Patterns that involve ^ {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000514" =========
515syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
Bram Moolenaarff1d0d42007-05-10 17:24:16 +0000516syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
Bram Moolenaar071d4272004-06-13 20:20:40 +0000517syn match vimContinue "^\s*\\"
518syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
519syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
520
Bram Moolenaar18144c82006-04-12 21:52:12 +0000521" Searches And Globals: {{{2
522" ====================
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000523syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
524syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
Bram Moolenaar18144c82006-04-12 21:52:12 +0000525syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/'
526syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/'
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000527
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000528" Scripts : perl,ruby : Benoit Cerrina {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000529" ======= python,tcl: Johannes Zellner
530
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000531" Allows users to specify the type of embedded script highlighting
532" they want: (perl/python/ruby/tcl support)
533" g:vimsyn_embed == 0 : don't embed any scripts
534" g:vimsyn_embed ~= 'm' : embed mzscheme (but only if vim supports it)
535" g:vimsyn_embed ~= 'p' : embed perl (but only if vim supports it)
536" g:vimsyn_embed ~= 'P' : embed python (but only if vim supports it)
537" g:vimsyn_embed ~= 'r' : embed ruby (but only if vim supports it)
538" g:vimsyn_embed ~= 't' : embed tcl (but only if vim supports it)
539if !exists("g:vimsyn_embed")
540 let g:vimsyn_embed= "mpPr"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000541endif
542
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000543" [-- perl --] {{{3
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000544if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(expand("<sfile>:p:h")."/perl.vim")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000545 unlet! b:current_syntax
546 syn include @vimPerlScript <sfile>:p:h/perl.vim
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000547 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'p'
548 syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
549 syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
550 else
551 syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
552 syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
553 endif
Bram Moolenaarc236c162008-07-13 17:41:49 +0000554else
555 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
556 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000557endif
558
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000559" [-- ruby --] {{{3
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000560if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(expand("<sfile>:p:h")."/ruby.vim")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000561 unlet! b:current_syntax
562 syn include @vimRubyScript <sfile>:p:h/ruby.vim
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000563 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'r'
564 syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
565 else
Bram Moolenaarc236c162008-07-13 17:41:49 +0000566 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000567 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000568 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
Bram Moolenaarc236c162008-07-13 17:41:49 +0000569else
570 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
571 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000572endif
573
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000574" [-- python --] {{{3
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000575if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(expand("<sfile>:p:h")."/python.vim")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000576 unlet! b:current_syntax
577 syn include @vimPythonScript <sfile>:p:h/python.vim
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000578 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'P'
579 syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
580 syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
581 else
582 syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
583 syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
584 endif
Bram Moolenaarc236c162008-07-13 17:41:49 +0000585else
586 syn region vimEmbedError start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+
587 syn region vimEmbedError start=+py\%[thon]\s*<<\s*$+ end=+\.$+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000588endif
589
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000590" [-- tcl --] {{{3
Bram Moolenaar9964e462007-05-05 17:54:07 +0000591if has("win32") || has("win95") || has("win64") || has("win16")
592 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000593 let trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
Bram Moolenaar9964e462007-05-05 17:54:07 +0000594else
595 let trytcl= 1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000596endif
Bram Moolenaar9964e462007-05-05 17:54:07 +0000597if trytcl
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000598 if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(expand("<sfile>:p:h")."/tcl.vim")
Bram Moolenaar9964e462007-05-05 17:54:07 +0000599 unlet! b:current_syntax
600 syn include @vimTclScript <sfile>:p:h/tcl.vim
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000601 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 't'
602 syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
603 syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
604 else
605 syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
606 syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
607 endif
Bram Moolenaar9964e462007-05-05 17:54:07 +0000608 endif
Bram Moolenaarc236c162008-07-13 17:41:49 +0000609else
610 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
611 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
Bram Moolenaar9964e462007-05-05 17:54:07 +0000612endif
613unlet trytcl
Bram Moolenaar071d4272004-06-13 20:20:40 +0000614
Bram Moolenaar8299df92004-07-10 09:47:34 +0000615" [-- mzscheme --] {{{3
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000616if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(expand("<sfile>:p:h")."/scheme.vim")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000617 unlet! b:current_syntax
618 let iskKeep= &isk
619 syn include @vimMzSchemeScript <sfile>:p:h/scheme.vim
620 let &isk= iskKeep
Bram Moolenaarc236c162008-07-13 17:41:49 +0000621 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'm'
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000622 syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
623 syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
624 else
625 syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
626 syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
627 endif
Bram Moolenaarc236c162008-07-13 17:41:49 +0000628else
629 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
630 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
Bram Moolenaar8299df92004-07-10 09:47:34 +0000631endif
632
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000633" Synchronize (speed) {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000634"============
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000635if exists("g:vimsyn_minlines")
636 exe "syn sync minlines=".g:vimsyn_minlines
Bram Moolenaar071d4272004-06-13 20:20:40 +0000637endif
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000638if exists("g:vimsyn_maxlines")
639 exe "syn sync maxlines=".g:vimsyn_maxlines
Bram Moolenaar071d4272004-06-13 20:20:40 +0000640else
641 syn sync maxlines=60
642endif
643syn sync linecont "^\s\+\\"
644syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
645
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000646" Highlighting Settings {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000647" ====================
648
649hi def link vimAuHighlight vimHighlight
650hi def link vimSubst1 vimSubst
651hi def link vimBehaveModel vimBehave
652
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000653if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000654 hi def link vimBehaveError vimError
655 hi def link vimCollClassErr vimError
656 hi def link vimErrSetting vimError
Bram Moolenaarc236c162008-07-13 17:41:49 +0000657 hi def link vimEmbedError vimError
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000658 hi def link vimFTError vimError
659 hi def link vimFunctionError vimError
Bram Moolenaar8299df92004-07-10 09:47:34 +0000660 hi def link vimFunc vimError
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000661 hi def link vimHiAttribList vimError
662 hi def link vimHiCtermError vimError
663 hi def link vimHiKeyError vimError
664 hi def link vimKeyCodeError vimError
665 hi def link vimMapModErr vimError
666 hi def link vimSubstFlagErr vimError
667 hi def link vimSynCaseError vimError
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000668 hi def link vimBufnrWarn vimWarn
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000669endif
670
Bram Moolenaare37d50a2008-08-06 17:06:04 +0000671hi def link vimAbb vimCommand
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000672hi def link vimAddress vimMark
Bram Moolenaar071d4272004-06-13 20:20:40 +0000673hi def link vimAugroupKey vimCommand
674hi def link vimAutoCmdOpt vimOption
675hi def link vimAutoCmd vimCommand
676hi def link vimAutoSet vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000677hi def link vimBehave vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000678hi def link vimCommentString vimString
679hi def link vimCondHL vimCommand
680hi def link vimEchoHLNone vimGroup
681hi def link vimEchoHL vimCommand
682hi def link vimElseif vimCondHL
Bram Moolenaar071d4272004-06-13 20:20:40 +0000683hi def link vimFgBgAttrib vimHiAttrib
684hi def link vimFTCmd vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000685hi def link vimFTOption vimSynType
Bram Moolenaar071d4272004-06-13 20:20:40 +0000686hi def link vimFuncKey vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000687hi def link vimGroupAdd vimSynOption
688hi def link vimGroupRem vimSynOption
Bram Moolenaar071d4272004-06-13 20:20:40 +0000689hi def link vimHiCtermFgBg vimHiTerm
690hi def link vimHiCTerm vimHiTerm
691hi def link vimHighlight vimCommand
692hi def link vimHiGroup vimGroupName
693hi def link vimHiGuiFgBg vimHiTerm
694hi def link vimHiGuiFont vimHiTerm
695hi def link vimHiGuiRgb vimNumber
696hi def link vimHiGui vimHiTerm
Bram Moolenaar071d4272004-06-13 20:20:40 +0000697hi def link vimHiStartStop vimHiTerm
698hi def link vimHLGroup vimGroup
699hi def link vimInsert vimString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000700hi def link vimKeyCode vimSpecFile
701hi def link vimLet vimCommand
702hi def link vimLineComment vimComment
703hi def link vimMapBang vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000704hi def link vimMapModKey vimFuncSID
705hi def link vimMapMod vimBracket
706hi def link vimMap vimCommand
707hi def link vimMarkNumber vimNumber
708hi def link vimMenuMod vimMapMod
709hi def link vimMenuNameMore vimMenuName
710hi def link vimMtchComment vimComment
Bram Moolenaar05159a02005-02-26 23:04:13 +0000711hi def link vimNorm vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000712hi def link vimNotPatSep vimString
Bram Moolenaar383f9bc2005-01-19 22:18:32 +0000713hi def link vimPatSepR vimPatSep
714hi def link vimPatSepZ vimPatSep
Bram Moolenaar071d4272004-06-13 20:20:40 +0000715hi def link vimPatSepErr vimPatSep
716hi def link vimPatSepZone vimString
717hi def link vimPlainMark vimMark
718hi def link vimPlainRegister vimRegister
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000719hi def link vimSearch vimString
720hi def link vimSearchDelim Statement
Bram Moolenaar071d4272004-06-13 20:20:40 +0000721hi def link vimSetMod vimOption
722hi def link vimSetString vimString
723hi def link vimSpecFileMod vimSpecFile
724hi def link vimStringCont vimString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000725hi def link vimSubstTwoBS vimString
726hi def link vimSubst vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000727hi def link vimSyncGroupName vimGroupName
728hi def link vimSyncGroup vimGroupName
729hi def link vimSynContains vimSynOption
730hi def link vimSynKeyContainedin vimSynContains
731hi def link vimSynKeyOpt vimSynOption
732hi def link vimSynMtchGrp vimSynOption
733hi def link vimSynMtchOpt vimSynOption
734hi def link vimSynNextgroup vimSynOption
735hi def link vimSynNotPatRange vimSynRegPat
736hi def link vimSynPatRange vimString
737hi def link vimSynRegOpt vimSynOption
738hi def link vimSynRegPat vimString
739hi def link vimSyntax vimCommand
740hi def link vimSynType vimSpecial
741hi def link vimUserAttrbCmplt vimSpecial
742hi def link vimUserAttrbKey vimOption
743hi def link vimUserAttrb vimSpecial
744hi def link vimUserCommand vimCommand
745hi def link vimUserFunc Normal
746
747hi def link vimAutoEvent Type
748hi def link vimBracket Delimiter
749hi def link vimCmplxRepeat SpecialChar
750hi def link vimCommand Statement
751hi def link vimComment Comment
752hi def link vimCommentTitle PreProc
753hi def link vimContinue Special
754hi def link vimCtrlChar SpecialChar
755hi def link vimElseIfErr Error
756hi def link vimEnvvar PreProc
757hi def link vimError Error
758hi def link vimFold Folded
759hi def link vimFuncName Function
760hi def link vimFuncSID Special
761hi def link vimFuncVar Identifier
762hi def link vimGroup Type
763hi def link vimGroupSpecial Special
764hi def link vimHLMod PreProc
765hi def link vimHiAttrib PreProc
766hi def link vimHiTerm Type
767hi def link vimKeyword Statement
768hi def link vimMark Number
769hi def link vimMenuName PreProc
770hi def link vimNotation Special
Bram Moolenaar9964e462007-05-05 17:54:07 +0000771hi def link vimNotFunc vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000772hi def link vimNumber Number
773hi def link vimOper Operator
774hi def link vimOption PreProc
775hi def link vimOperError Error
776hi def link vimPatSep SpecialChar
777hi def link vimPattern Type
778hi def link vimRegister SpecialChar
779hi def link vimScriptDelim Comment
780hi def link vimSep Delimiter
781hi def link vimSetSep Statement
782hi def link vimSpecFile Identifier
783hi def link vimSpecial Type
784hi def link vimStatement Statement
785hi def link vimString String
786hi def link vimSubstDelim Delimiter
787hi def link vimSubstFlags Special
788hi def link vimSubstSubstr SpecialChar
789hi def link vimSynCase Type
790hi def link vimSynCaseError Error
791hi def link vimSynError Error
792hi def link vimSynOption Special
793hi def link vimSynReg Type
794hi def link vimSyncC Type
795hi def link vimSyncError Error
796hi def link vimSyncKey Type
797hi def link vimSyncNone Type
798hi def link vimTodo Todo
799hi def link vimUserCmdError Error
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000800hi def link vimUserAttrbCmpltFunc Special
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000801hi def link vimWarn WarningMsg
Bram Moolenaar071d4272004-06-13 20:20:40 +0000802
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000803" Current Syntax Variable: {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000804let b:current_syntax = "vim"
805" vim:ts=18 fdm=marker