blob: c220f9de24168ae98379765d841bc95d6bd3b921 [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 Moolenaarc236c162008-07-13 17:41:49 +00004" Last Change: Jul 10, 2008
5" Version: 7.2-79+
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 Moolenaar3577c6f2008-06-24 21:16:56 +000019syn keyword vimCommand contained ab[breviate] argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo ca[bbrev] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] 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] helpg[rep] iabc[lear] inorea[bbrev] ju[mps] 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] 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 abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] 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] helpt[ags] if is[earch] k 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] 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 abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] cnorea[bbrev] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] exi[t] fina[lly] fo[ld] for ha[rdcopy] hid[e] ij[ump] isp[lit] keepalt 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] 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 al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] 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] h[elp] his[tory] il[ist] iuna[bbrev] keepj[umps] 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] norea[bbrev] 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 arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] caddf[ile] ccl[ose] cfir[st] changes cl[ist] 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] helpf[ind] ia[bbrev] imapc[lear] j[oin] kee[pmarks]
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 Moolenaarcfbc5ee2004-07-02 15:38:35 +0000295" Autocmd {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000296" =======
297syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
298syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
299syn match vimAutoCmdSfxList contained "\S*"
300syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
301
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000302" Echo and Execute -- prefer strings! {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000303" ================
304syn region vimEcho oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimString,varVar
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000305syn 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 +0000306syn match vimEchoHL "echohl\=" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
307syn case ignore
308syn keyword vimEchoHLNone none
309syn case match
310
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000311" Maps {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000312" ====
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000313syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
Bram Moolenaar9964e462007-05-05 17:54:07 +0000314syn 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 +0000315syn keyword vimMap mapc[lear]
Bram Moolenaarb8a7b562006-02-01 21:47:16 +0000316syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
317syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs
Bram Moolenaar25e2c9e2006-04-27 21:40:34 +0000318syn 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 +0000319syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend
320syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue
Bram Moolenaar071d4272004-06-13 20:20:40 +0000321syn case ignore
Bram Moolenaar25e2c9e2006-04-27 21:40:34 +0000322syn keyword vimMapModKey contained buffer expr leader localleader plug script sid silent unique
Bram Moolenaar071d4272004-06-13 20:20:40 +0000323syn case match
324
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000325" Menus {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000326" =====
327syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
328syn 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
329syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap
330syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName
331syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
332syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
333syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs
334syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand
335syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList
336
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000337" Angle-Bracket Notation (tnx to Michael Geddes) {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000338" ======================
339syn case ignore
Bram Moolenaar9964e462007-05-05 17:54:07 +0000340syn 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 +0000341syn match vimNotation "\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket
Bram Moolenaard68071d2006-05-02 22:08:30 +0000342syn match vimNotation "\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket
343syn match vimNotation '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
344syn match vimNotation '\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>' contains=vimBracket
345syn match vimNotation "\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket
Bram Moolenaar071d4272004-06-13 20:20:40 +0000346syn match vimBracket contained "[\\<>]"
347syn case match
348
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000349" User Function Highlighting {{{2
350" (following Gautam Iyer's suggestion)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000351" ==========================
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000352syn match vimFunc "\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute
353syn 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 +0000354syn match vimNotFunc "\<if\>\|\<el\%[seif]\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000355
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000356" Errors And Warnings: {{{2
357" ====================
358if !exists("g:vimsyn_noerror")
359 syn match vimElseIfErr "\<else\s\+if\>"
360 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
361endif
362
363" Norm {{{2
Bram Moolenaar05159a02005-02-26 23:04:13 +0000364" ====
365syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
366syn match vimNormCmds contained ".*$"
367
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000368" Syntax {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000369"=======
370syn match vimGroupList contained "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep
371syn match vimGroupList contained "@\=[^ \t,]*," nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
372syn keyword vimGroupSpecial contained ALL ALLBUT
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000373if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000374 syn match vimSynError contained "\i\+"
375 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
376endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000377syn match vimSynContains contained "\<contain\(s\|edin\)=" nextgroup=vimGroupList
378syn match vimSynKeyContainedin contained "\<containedin=" nextgroup=vimGroupList
379syn match vimSynNextgroup contained "nextgroup=" nextgroup=vimGroupList
380
381syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
382syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
383
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000384" Syntax: case {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000385syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000386if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000387 syn match vimSynCaseError contained "\i\+"
388endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000389syn keyword vimSynCase contained ignore match
390
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000391" Syntax: clear {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000392syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
393
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000394" Syntax: cluster {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000395syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
396syn region vimClusterName contained matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
397syn match vimGroupAdd contained "add=" nextgroup=vimGroupList
398syn match vimGroupRem contained "remove=" nextgroup=vimGroupList
399
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000400" Syntax: include {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000401syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
402
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000403" Syntax: keyword {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000404syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
405syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000406syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
Bram Moolenaar071d4272004-06-13 20:20:40 +0000407syn match vimSynKeyOpt contained "\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
408
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000409" Syntax: match {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000410syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
411syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
412syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
413syn match vimSynMtchOpt contained "\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
414if has("conceal")
415 syn match vimSynMtchOpt contained "\<cchar=" nextgroup=VimSynMtchCchar
416 syn match vimSynMtchCchar contained "."
417endif
418
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000419" Syntax: off and on {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000420syn keyword vimSynType contained enable list manual off on reset
421
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000422" Syntax: region {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000423syn cluster vimSynRegPatGroup contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
424syn cluster vimSynRegGroup contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
425syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
426syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
427syn match vimSynRegOpt contained "\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
428syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat
429syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
430syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
431syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
432syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
433syn match vimSynPatMod contained "lc=\d\+"
434syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
435syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
436syn match vimSynNotPatRange contained "\\\\\|\\\["
437syn match vimMtchComment contained '"[^"]\+$'
438
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000439" Syntax: sync {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000440" ============
Bram Moolenaardf177f62005-02-22 08:39:57 +0000441syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000442if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000443 syn match vimSyncError contained "\i\+"
444endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000445syn keyword vimSyncC contained ccomment clear fromstart
446syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
447syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
Bram Moolenaardf177f62005-02-22 08:39:57 +0000448syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
Bram Moolenaar071d4272004-06-13 20:20:40 +0000449syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
450syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
451syn match vimSyncGroupName contained "\k\+" skipwhite nextgroup=vimSyncKey
452syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
453syn match vimSyncGroup contained "\k\+" skipwhite nextgroup=vimSynRegPat,vimSyncNone
454syn keyword vimSyncNone contained NONE
455
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000456" Additional IsCommand, here by reasons of precedence {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000457" ====================
458syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
459
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000460" Highlighting {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000461" ============
462syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
463syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
464syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster
465
466syn match vimHiGroup contained "\i\+"
467syn case ignore
Bram Moolenaar4770d092006-01-12 23:22:24 +0000468syn keyword vimHiAttrib contained none bold inverse italic reverse standout underline undercurl
Bram Moolenaar071d4272004-06-13 20:20:40 +0000469syn keyword vimFgBgAttrib contained none bg background fg foreground
470syn case match
471syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
472syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
473syn case ignore
474syn 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
475
476syn case match
477syn match vimHiFontname contained "[a-zA-Z\-*]\+"
478syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
479syn match vimHiGuiRgb contained "#\x\{6}"
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000480if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000481 syn match vimHiCtermError contained "[^0-9]\i*"
482endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000483
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000484" Highlighting: hi group key=arg ... {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000485syn cluster vimHiCluster contains=vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
486syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000487if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000488 syn match vimHiKeyError contained "\i\+="he=e-1
489endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000490syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
491syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
492syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
493syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
494syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
495syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
Bram Moolenaar4770d092006-01-12 23:22:24 +0000496syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
Bram Moolenaar071d4272004-06-13 20:20:40 +0000497syn match vimHiTermcap contained "\S\+" contains=vimNotation
498
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000499" Highlight: clear {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000500syn keyword vimHiClear contained clear nextgroup=vimHiGroup
501
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000502" Highlight: link {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000503syn region vimHiLink contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
504
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000505" Control Characters {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000506" ==================
507syn match vimCtrlChar "[- -]"
508
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000509" Beginners - Patterns that involve ^ {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000510" =========
511syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
Bram Moolenaarff1d0d42007-05-10 17:24:16 +0000512syn 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 +0000513syn match vimContinue "^\s*\\"
514syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
515syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
516
Bram Moolenaar18144c82006-04-12 21:52:12 +0000517" Searches And Globals: {{{2
518" ====================
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000519syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
520syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
Bram Moolenaar18144c82006-04-12 21:52:12 +0000521syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/'
522syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/'
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000523
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000524" Scripts : perl,ruby : Benoit Cerrina {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000525" ======= python,tcl: Johannes Zellner
526
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000527" Allows users to specify the type of embedded script highlighting
528" they want: (perl/python/ruby/tcl support)
529" g:vimsyn_embed == 0 : don't embed any scripts
530" g:vimsyn_embed ~= 'm' : embed mzscheme (but only if vim supports it)
531" g:vimsyn_embed ~= 'p' : embed perl (but only if vim supports it)
532" g:vimsyn_embed ~= 'P' : embed python (but only if vim supports it)
533" g:vimsyn_embed ~= 'r' : embed ruby (but only if vim supports it)
534" g:vimsyn_embed ~= 't' : embed tcl (but only if vim supports it)
535if !exists("g:vimsyn_embed")
536 let g:vimsyn_embed= "mpPr"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000537endif
538
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000539" [-- perl --] {{{3
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000540if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(expand("<sfile>:p:h")."/perl.vim")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000541 unlet! b:current_syntax
542 syn include @vimPerlScript <sfile>:p:h/perl.vim
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000543 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'p'
544 syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
545 syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
546 else
547 syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
548 syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
549 endif
Bram Moolenaarc236c162008-07-13 17:41:49 +0000550else
551 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
552 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000553endif
554
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000555" [-- ruby --] {{{3
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000556if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(expand("<sfile>:p:h")."/ruby.vim")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000557 unlet! b:current_syntax
558 syn include @vimRubyScript <sfile>:p:h/ruby.vim
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000559 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'r'
560 syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
561 else
Bram Moolenaarc236c162008-07-13 17:41:49 +0000562 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000563 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000564 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
Bram Moolenaarc236c162008-07-13 17:41:49 +0000565else
566 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
567 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000568endif
569
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000570" [-- python --] {{{3
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000571if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(expand("<sfile>:p:h")."/python.vim")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000572 unlet! b:current_syntax
573 syn include @vimPythonScript <sfile>:p:h/python.vim
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000574 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'P'
575 syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
576 syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
577 else
578 syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
579 syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
580 endif
Bram Moolenaarc236c162008-07-13 17:41:49 +0000581else
582 syn region vimEmbedError start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+
583 syn region vimEmbedError start=+py\%[thon]\s*<<\s*$+ end=+\.$+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000584endif
585
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000586" [-- tcl --] {{{3
Bram Moolenaar9964e462007-05-05 17:54:07 +0000587if has("win32") || has("win95") || has("win64") || has("win16")
588 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000589 let trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
Bram Moolenaar9964e462007-05-05 17:54:07 +0000590else
591 let trytcl= 1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000592endif
Bram Moolenaar9964e462007-05-05 17:54:07 +0000593if trytcl
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000594 if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(expand("<sfile>:p:h")."/tcl.vim")
Bram Moolenaar9964e462007-05-05 17:54:07 +0000595 unlet! b:current_syntax
596 syn include @vimTclScript <sfile>:p:h/tcl.vim
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000597 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 't'
598 syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
599 syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
600 else
601 syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
602 syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
603 endif
Bram Moolenaar9964e462007-05-05 17:54:07 +0000604 endif
Bram Moolenaarc236c162008-07-13 17:41:49 +0000605else
606 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
607 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
Bram Moolenaar9964e462007-05-05 17:54:07 +0000608endif
609unlet trytcl
Bram Moolenaar071d4272004-06-13 20:20:40 +0000610
Bram Moolenaar8299df92004-07-10 09:47:34 +0000611" [-- mzscheme --] {{{3
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000612if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(expand("<sfile>:p:h")."/scheme.vim")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000613 unlet! b:current_syntax
614 let iskKeep= &isk
615 syn include @vimMzSchemeScript <sfile>:p:h/scheme.vim
616 let &isk= iskKeep
Bram Moolenaarc236c162008-07-13 17:41:49 +0000617 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'm'
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000618 syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
619 syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
620 else
621 syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
622 syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
623 endif
Bram Moolenaarc236c162008-07-13 17:41:49 +0000624else
625 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
626 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
Bram Moolenaar8299df92004-07-10 09:47:34 +0000627endif
628
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000629" Synchronize (speed) {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000630"============
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000631if exists("g:vimsyn_minlines")
632 exe "syn sync minlines=".g:vimsyn_minlines
Bram Moolenaar071d4272004-06-13 20:20:40 +0000633endif
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000634if exists("g:vimsyn_maxlines")
635 exe "syn sync maxlines=".g:vimsyn_maxlines
Bram Moolenaar071d4272004-06-13 20:20:40 +0000636else
637 syn sync maxlines=60
638endif
639syn sync linecont "^\s\+\\"
640syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
641
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000642" Highlighting Settings {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000643" ====================
644
645hi def link vimAuHighlight vimHighlight
646hi def link vimSubst1 vimSubst
647hi def link vimBehaveModel vimBehave
648
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000649if !exists("g:vimsyn_noerror")
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000650 hi def link vimBehaveError vimError
651 hi def link vimCollClassErr vimError
652 hi def link vimErrSetting vimError
Bram Moolenaarc236c162008-07-13 17:41:49 +0000653 hi def link vimEmbedError vimError
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000654 hi def link vimFTError vimError
655 hi def link vimFunctionError vimError
Bram Moolenaar8299df92004-07-10 09:47:34 +0000656 hi def link vimFunc vimError
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000657 hi def link vimHiAttribList vimError
658 hi def link vimHiCtermError vimError
659 hi def link vimHiKeyError vimError
660 hi def link vimKeyCodeError vimError
661 hi def link vimMapModErr vimError
662 hi def link vimSubstFlagErr vimError
663 hi def link vimSynCaseError vimError
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000664 hi def link vimBufnrWarn vimWarn
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000665endif
666
667hi def link vimAddress vimMark
Bram Moolenaar071d4272004-06-13 20:20:40 +0000668hi def link vimAugroupKey vimCommand
669hi def link vimAutoCmdOpt vimOption
670hi def link vimAutoCmd vimCommand
671hi def link vimAutoSet vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000672hi def link vimBehave vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000673hi def link vimCommentString vimString
674hi def link vimCondHL vimCommand
675hi def link vimEchoHLNone vimGroup
676hi def link vimEchoHL vimCommand
677hi def link vimElseif vimCondHL
Bram Moolenaar071d4272004-06-13 20:20:40 +0000678hi def link vimFgBgAttrib vimHiAttrib
679hi def link vimFTCmd vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000680hi def link vimFTOption vimSynType
Bram Moolenaar071d4272004-06-13 20:20:40 +0000681hi def link vimFuncKey vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000682hi def link vimGroupAdd vimSynOption
683hi def link vimGroupRem vimSynOption
Bram Moolenaar071d4272004-06-13 20:20:40 +0000684hi def link vimHiCtermFgBg vimHiTerm
685hi def link vimHiCTerm vimHiTerm
686hi def link vimHighlight vimCommand
687hi def link vimHiGroup vimGroupName
688hi def link vimHiGuiFgBg vimHiTerm
689hi def link vimHiGuiFont vimHiTerm
690hi def link vimHiGuiRgb vimNumber
691hi def link vimHiGui vimHiTerm
Bram Moolenaar071d4272004-06-13 20:20:40 +0000692hi def link vimHiStartStop vimHiTerm
693hi def link vimHLGroup vimGroup
694hi def link vimInsert vimString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000695hi def link vimKeyCode vimSpecFile
696hi def link vimLet vimCommand
697hi def link vimLineComment vimComment
698hi def link vimMapBang vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000699hi def link vimMapModKey vimFuncSID
700hi def link vimMapMod vimBracket
701hi def link vimMap vimCommand
702hi def link vimMarkNumber vimNumber
703hi def link vimMenuMod vimMapMod
704hi def link vimMenuNameMore vimMenuName
705hi def link vimMtchComment vimComment
Bram Moolenaar05159a02005-02-26 23:04:13 +0000706hi def link vimNorm vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000707hi def link vimNotPatSep vimString
Bram Moolenaar383f9bc2005-01-19 22:18:32 +0000708hi def link vimPatSepR vimPatSep
709hi def link vimPatSepZ vimPatSep
Bram Moolenaar071d4272004-06-13 20:20:40 +0000710hi def link vimPatSepErr vimPatSep
711hi def link vimPatSepZone vimString
712hi def link vimPlainMark vimMark
713hi def link vimPlainRegister vimRegister
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000714hi def link vimSearch vimString
715hi def link vimSearchDelim Statement
Bram Moolenaar071d4272004-06-13 20:20:40 +0000716hi def link vimSetMod vimOption
717hi def link vimSetString vimString
718hi def link vimSpecFileMod vimSpecFile
719hi def link vimStringCont vimString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000720hi def link vimSubstTwoBS vimString
721hi def link vimSubst vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000722hi def link vimSyncGroupName vimGroupName
723hi def link vimSyncGroup vimGroupName
724hi def link vimSynContains vimSynOption
725hi def link vimSynKeyContainedin vimSynContains
726hi def link vimSynKeyOpt vimSynOption
727hi def link vimSynMtchGrp vimSynOption
728hi def link vimSynMtchOpt vimSynOption
729hi def link vimSynNextgroup vimSynOption
730hi def link vimSynNotPatRange vimSynRegPat
731hi def link vimSynPatRange vimString
732hi def link vimSynRegOpt vimSynOption
733hi def link vimSynRegPat vimString
734hi def link vimSyntax vimCommand
735hi def link vimSynType vimSpecial
736hi def link vimUserAttrbCmplt vimSpecial
737hi def link vimUserAttrbKey vimOption
738hi def link vimUserAttrb vimSpecial
739hi def link vimUserCommand vimCommand
740hi def link vimUserFunc Normal
741
742hi def link vimAutoEvent Type
743hi def link vimBracket Delimiter
744hi def link vimCmplxRepeat SpecialChar
745hi def link vimCommand Statement
746hi def link vimComment Comment
747hi def link vimCommentTitle PreProc
748hi def link vimContinue Special
749hi def link vimCtrlChar SpecialChar
750hi def link vimElseIfErr Error
751hi def link vimEnvvar PreProc
752hi def link vimError Error
753hi def link vimFold Folded
754hi def link vimFuncName Function
755hi def link vimFuncSID Special
756hi def link vimFuncVar Identifier
757hi def link vimGroup Type
758hi def link vimGroupSpecial Special
759hi def link vimHLMod PreProc
760hi def link vimHiAttrib PreProc
761hi def link vimHiTerm Type
762hi def link vimKeyword Statement
763hi def link vimMark Number
764hi def link vimMenuName PreProc
765hi def link vimNotation Special
Bram Moolenaar9964e462007-05-05 17:54:07 +0000766hi def link vimNotFunc vimCommand
Bram Moolenaar071d4272004-06-13 20:20:40 +0000767hi def link vimNumber Number
768hi def link vimOper Operator
769hi def link vimOption PreProc
770hi def link vimOperError Error
771hi def link vimPatSep SpecialChar
772hi def link vimPattern Type
773hi def link vimRegister SpecialChar
774hi def link vimScriptDelim Comment
775hi def link vimSep Delimiter
776hi def link vimSetSep Statement
777hi def link vimSpecFile Identifier
778hi def link vimSpecial Type
779hi def link vimStatement Statement
780hi def link vimString String
781hi def link vimSubstDelim Delimiter
782hi def link vimSubstFlags Special
783hi def link vimSubstSubstr SpecialChar
784hi def link vimSynCase Type
785hi def link vimSynCaseError Error
786hi def link vimSynError Error
787hi def link vimSynOption Special
788hi def link vimSynReg Type
789hi def link vimSyncC Type
790hi def link vimSyncError Error
791hi def link vimSyncKey Type
792hi def link vimSyncNone Type
793hi def link vimTodo Todo
794hi def link vimUserCmdError Error
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000795hi def link vimUserAttrbCmpltFunc Special
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000796hi def link vimWarn WarningMsg
Bram Moolenaar071d4272004-06-13 20:20:40 +0000797
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000798" Current Syntax Variable: {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000799let b:current_syntax = "vim"
800" vim:ts=18 fdm=marker