home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / unix / vim-6.2.tar.bz2 / vim-6.2.tar / vim62 / runtime / syntax / vim.vim < prev    next >
Encoding:
Text File  |  2003-05-31  |  41.6 KB  |  606 lines

  1. " Vim syntax file
  2. " Language:    Vim 6.2f script
  3. " Maintainer:    Dr. Charles E. Campbell, Jr. <Charles.E.Campbell.1@nasa.gov>
  4. " Last Change:    May 27, 2003
  5. " Version:    6.2f-01
  6.  
  7. " Quit when a syntax file was already loaded
  8. if exists("b:current_syntax")
  9.   finish
  10. endif
  11.  
  12. " vimTodo: contains common special-notices for comments
  13. " Use the vimCommentGroup cluster to add your own.
  14. syn keyword vimTodo contained    COMBAK    NOT    RELEASED    TODO    WIP
  15. syn cluster vimCommentGroup    contains=vimTodo
  16.  
  17. " regular vim commands
  18. syn keyword vimCommand contained    DeleteFirst I N[ext] Nread Nw P[rint] X ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bN[ext] bad[d] ba[ll] bd[elete] bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] cN[ext] ca[bbrev] cabc[lear] cal[l] cat[ch] cc ccl[ose] cd ce[nter] cf[ile] cfir[st] cg[etfile] c[hange] chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cnf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] delf[unction] diffg[et] diffpatch diffpu[t] diffsplit diffthis dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] fu[nction] g[lobal] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] hid[e] his[tory] ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k lan[guage] la[st] lc[d] lch[dir] le[ft] lefta[bove] l[ist] lm[ap] lmapc[lear] lno[remap] lo[adview] ls lu[nmap] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mkvie[w] mkv[imrc] mod[e] m[ove] new n[ext] nmapc[lear] noh[lsearch] norea[bbrev] norm[al] nu[mber] nun[map] omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] pop[up] pp[op] pre[serve] prev[ious] p[rint] prompt promptf[ind] promptr[epl] ps[earch] ptN[ext] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sN[ext] sal[l] sa[rgument] sav[eas] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] sf[ind] sfir[st sh[ell] sign sil[ent] si[malt] sla[st] sl[eep] sm[agic] sn[ext] sni[ff] sno[magic] so[urce] sp[lit] spr[evious] sr[ewind] sta[g] star[tinsert] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sus[pend] sv[iew] syncbind t tN[ext] ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] the th[row] tj[ump] tl[ast] tm[enu] tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu[nmenu] una[bbreviate] u[ndo] unh[ide] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] v[global] vie[w] vi[sual] vmapc[lear] vne[w] vs[plit] vu[nmap] wN[ext] wa[ll] wh[ile] winc[md] windo winp[os] winpos* win[size] wn[ext] wp[revous] wq wqa[ll] w[rite] ws[verb] wv[iminfo] xa[ll] x[it] y[ank]
  19. syn match   vimCommand contained    "\<z[-+^.=]"
  20.  
  21. " vimOptions are caught only when contained in a vimSet
  22. syn keyword vimOption contained    : acd ai akm al aleph allowrevins altkeymap ambiwidth ambw ar arab arabic arabicshape ari arshape autochdir autoindent autoread autowrite autowriteall aw awa background backspace backup backupcopy backupdir backupext backupskip balloondelay ballooneval bdir bdlay beval bex bg bh bin binary biosk bioskey bk bkc bl bomb breakat brk browsedir bs bsdir bsk bt bufhidden buflisted buftype casemap cb ccv cd cdpath cedit cf ch charconvert ci cin cindent cink cinkeys cino cinoptions cinw cinwords clipboard cmdheight cmdwinheight cmp cms co columns com comments commentstring compatible complete conc conceallevel confirm consk conskey copyindent cp cpo cpoptions cpt crb cscopepathcomp cscopeprg cscopequickfix cscopetag cscopetagorder cscopeverbose cspc csprg csqf cst csto csverb cursorbind cwh debug deco def define delcombine dex dg dict dictionary diff diffexpr diffopt digraph dip dir directory display dy ea ead eadirection eb ed edcompatible ef efm ei ek enc encoding endofline eol ep equalalways equalprg errorbells errorfile errorformat esckeys et eventignore ex expandtab exrc fcl fcs fdc fde fdi fdl fdls fdm fdn fdo fdt fen fenc fencs ff ffs fileencoding fileencodings fileformat fileformats filetype fillchars fk fkmap fml fmr fo foldclose foldcolumn foldenable foldexpr foldignore foldlevel foldlevelstart foldmarker foldmethod foldminlines foldnestmax foldopen foldtext formatoptions formatprg fp ft gcr gd gdefault gfm gfn gfs gfw ghr go gp grepformat grepprg guicursor guifont guifontset guifontwide guiheadroom guioptions guipty helpfile helpheight hf hh hi hid hidden highlight history hk hkmap hkmapp hkp hl hls hlsearch ic icon iconstring ignorecase im imactivatekey imak imc imcmdline imd imdisable imi iminsert ims imsearch inc include includeexpr incsearch inde indentexpr indentkeys indk inex inf infercase insertmode is isf isfname isi isident isk iskeyword isp isprint joinspaces js key keymap keymodel keywordprg km kmp kp langmap langmenu laststatus lazyredraw lbr lcs linebreak lines linespace lisp lispwords list listchars lm lmap loadplugins lpl ls lsp lw lz ma magic makeef makeprg mat matchpairs matchtime maxfuncdepth maxmapdepth maxmem maxmemtot mef menuitems mfd mh mis ml mls mm mmd mmt mod modeline modelines modifiable modified more mouse mousef mousefocus mousehide mousem mousemodel mouses mouseshape mouset mousetime mp mps nf nrformats nu number oft osfiletype pa para paragraphs paste pastetoggle patchexpr patchmode path pdev penc pex pexpr pfn pheader pi pm popt preserveindent previewheight previewwindow printdevice printencoding printexpr printfont printheader printoptions pt pvh pvw readonly remap report restorescreen revins ri rightleft rightleftcmd rl rlc ro rs rtp ru ruf ruler rulerformat runtimepath sb sbo sbr sc scb scr scroll scrollbind scrolljump scrolloff scrollopt scs sect sections secure sel selection selectmode sessionoptions sft sh shcf shell shellcmdflag shellpipe shellquote shellredir shellslash shelltype shellxquote shiftround shiftwidth shm shortmess shortname showbreak showcmd showfulltag showmatch showmode shq si sidescroll sidescrolloff siso sj slm sm smartcase smartindent smarttab smd sn so softtabstop sol sp splitbelow splitright spr sr srr ss ssl ssop st sta startofline statusline stl sts su sua suffixes suffixesadd sw swapfile swapsync swb swf switchbuf sws sxq syn syntax ta tabstop tag tagbsearch taglength tagrelative tags tagstack tb tbi tbidi tbis tbs tenc term termbidi termencoding terse textauto textmode textwidth tf tgst thesaurus tildeop timeout timeoutlen title titlelen titleold titlestring tl tm to toolbar toolbariconsize top tr ts tsl tsr ttimeout ttimeoutlen ttm tty ttybuiltin ttyfast ttym ttymouse ttyscroll ttytype tw tx uc ul undolevels updatecount updatetime ut vb vbs vdir ve verbose vi viewdir viewoptions viminfo virtualedit visualbell vop wa wak warn wb wc wcm wd weirdinvert wfh wh whichwrap wig wildchar wildcharm wildignore wildmenu wildmode wim winaltkeys winfixheight winheight winminheight winminwidth winwidth wiv wiw wm wmh wmnu wmw wrap wrapmargin wrapscan write writeany writebackup writedelay ws ww
  23.  
  24. " These are the turn-off setting variants
  25. syn keyword vimOption contained    loadplugins noacd noai noakm noallowrevins noaltkeymap noar noarab noarabic noarabicshape noari noarshape noatuochdir noautoindent noautoread noautowrite noautowriteall noaw noawa nobackup noballooneval nobeval nobin nobinary nobiosk nobioskey nobk nobomb nocf noci nocin nocindent nocompatible noconfirm noconsk noconskey nocopyindent nocp nocrb nocscopetag nocscopeverbose nocst nocsverb nocursorbind nodg nodiff nodigraph nodisable noea noeb noed noedcompatible noek noendofline noeol noequalalways noerrorbells noesckeys noet noex noexpandtab noexrc nofen nofk nofkmap nofoldenable nogd nogdefault noguipty nohid nohidden nohk nohkmap nohkmapp nohkp nohls nohlsearch noic noicon noignorecase noim noimc noimcmdline noimd noincsearch noinf noinfercase noinsertmode nois nojoinspaces nojs nolazyredraw nolbr nolinebreak nolisp nolist noloadplugins nolpl nolz noma nomagic nomh noml nomod nomodeline nomodifiable nomodified nomore nomousef nomousefocus nomousehide nonu nonumber nopaste nopi nopreserveindent nopreviewwindow nopvw noreadonly noremap norestorescreen norevins nori norightleft norightleftcmd norl norlc noro nors noru noruler nosb nosc noscb noscrollbind noscs nosecure nosft noshellslash noshiftround noshortname noshowcmd noshowfulltag noshowmatch noshowmode nosi nosm nosmartcase nosmartindent nosmarttab nosmd nosn nosol nosplitbelow nosplitright nospr nosr nossl nosta nostartofline noswapfile noswf nota notagbsearch notagrelative notagstack notbi notbidi notbs notermbidi noterse notextauto notextmode notf notgst notildeop notimeout notitle noto notop notr nottimeout nottybuiltin nottyfast notx novb novisualbell nowa nowarn nowb noweirdinvert nowildmenu nowiv nowmnu nowrap nowrapscan nowrite nowriteany nowritebackup nows
  26.  
  27. " termcap codes (which can also be set)
  28. syn keyword vimOption contained    t_AB t_AF t_AL t_CS t_CV t_Co t_DL t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_IE t_IS t_K1 t_K3 t_K4 t_K5 t_K6 t_K7 t_K8 t_K9 t_KA t_KB t_KC t_KD t_KE t_KF t_KG t_KH t_KI t_KJ t_KK t_KL t_RI t_RV t_Sb t_Sf t_WP t_WS t_ZH t_ZR t_al t_bc t_cd t_ce t_cl t_cm t_cs t_da t_db t_dl t_fs t_k1 t_k2 t_k3 t_k4 t_k5 t_k6 t_k7 t_k8 t_k9 t_kB t_kD t_kI t_kN t_kP t_kb t_kd t_ke t_kh t_kl t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_se 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_xs
  29. syn match   vimOption contained    "t_#2"
  30. syn match   vimOption contained    "t_#4"
  31. syn match   vimOption contained    "t_%1"
  32. syn match   vimOption contained    "t_%i"
  33. syn match   vimOption contained    "t_&8"
  34. syn match   vimOption contained    "t_*7"
  35. syn match   vimOption contained    "t_@7"
  36. syn match   vimOption contained    "t_k;"
  37.  
  38. " these settings don't actually cause errors in vim, but were supported by vi and don't do anything in vim
  39. syn keyword vimErrSetting contained    hardtabs ht w1200 w300 w9600 wi window
  40.  
  41. " AutoBuf Events
  42. syn case ignore
  43. syn 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 CursorHold E135 E143 E200 E201 E203 E204 EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter RemoteReply StdinReadPost StdinReadPre Syntax TermChanged TermResponse User UserGettingBored VimEnter VimLeave VimLeavePre WinEnter WinLeave
  44.  
  45. " Highlight commonly used Groupnames
  46. syn keyword vimGroup contained    Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
  47.  
  48. " Default highlighting groups
  49. syn keyword vimHLGroup contained    Conceal Cursor CursorIM DiffAdd DiffChange DiffDelete DiffText Directory ErrorMsg FoldColumn Folded IncSearch LineNr Menu ModeMsg MoreMsg NonText Normal Question Scrollbar Search SpecialKey StatusLine StatusLineNC Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
  50. syn case match
  51.  
  52. " Function Names
  53. syn keyword vimFuncName contained    MyCounter append argc argidx argv browse bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line char2nr cindent col confirm cscope_connection cursor delete did_filetype escape eventhandler executable exists expand filereadable filewritable fnamemodify foldclosed foldclosedend foldlevel foldtext foreground function getbufvar getchar getcharmod getcwd getfsize getftime getline getreg getregtype getwinposx getwinposy getwinvar glob globpath has hasmapto histadd histdel histget histnr hlID hlexists hostname iconv indent input inputdialog inputrestore inputsave inputsecret isdirectory libcall libcallnr line line2byte lispindent localtime maparg mapcheck match matchend matchstr mode nextnonblank nr2char prevnonblank remote_expr remote_foreground remote_peek remote_read remote_send rename resolve search searchpair server2client serverlist setbufvar setline setreg setwinvar strftime stridx strlen strpart strridx strtrans submatch substitute synID synIDattr synIDtrans system tempname tolower toupper type virtcol visualmode winbufnr wincol winheight winline winnr winwidth
  54.  
  55. "--- syntax above generated by mkvimvim ---
  56.  
  57. " Special Vim Highlighting
  58.  
  59. " All vimCommands are contained by vimIsCommands.
  60. syn match vimCmdSep    "[:|]\+"    skipwhite nextgroup=vimAddress,vimAutoCmd,vimCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
  61. syn match vimIsCommand    "\<\a\+\>"    contains=vimCommand
  62. syn match vimVar    "\<[bwglsav]:\K\k*\>"
  63. syn match vimVar contained    "\<\K\k*\>"
  64. syn match vimFunc    "\I\i*\s*("    contains=vimFuncName,vimCommand
  65.  
  66. " Insertions And Appends: insert append
  67. " =======================
  68. syn region vimInsert    matchgroup=vimCommand start="^[: \t]*a\%[ppend]$"    matchgroup=vimCommand end="^\.$""
  69. syn region vimInsert    matchgroup=vimCommand start="^[: \t]*i\%[nsert]$"    matchgroup=vimCommand end="^\.$""
  70.  
  71. " Behave!
  72. " =======
  73. syn match   vimBehave    "\<be\%[have]\>" skipwhite nextgroup=vimBehaveModel,vimBehaveError
  74. syn keyword vimBehaveModel contained    mswin    xterm
  75. syn match   vimBehaveError contained    "[^ ]\+"
  76.  
  77. " Filetypes
  78. " =========
  79. syn match   vimFiletype    "\<filet\%[ype]\(\s\+\I\i*\)*\(|\|$\)"    skipwhite contains=vimFTCmd,vimFTOption,vimFTError
  80. syn match   vimFTError  contained    "\I\i*"
  81. syn keyword vimFTCmd    contained    filet[ype]
  82. syn keyword vimFTOption contained    on    off    indent    plugin
  83.  
  84. " Augroup : vimAugroupError removed because long augroups caused sync'ing problems.
  85. " ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
  86. syn 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
  87. syn region  vimAugroup    start="\<aug\%[roup]\>\s\+\K\k*" end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>"    contains=vimAugroupKey,vimAutoCmd,@vimAugroupList keepend
  88. syn match   vimAugroupError    "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
  89. syn keyword vimAugroupKey contained    aug[roup]
  90.  
  91. " Functions : Tag is provided for those who wish to highlight tagged functions
  92. " =========
  93. syn cluster vimFuncList    contains=vimFuncKey,Tag,vimFuncSID
  94. syn cluster vimFuncBodyList    contains=vimIsCommand,vimFunction,vimFunctionError,vimFuncBody,vimLineComment,vimSpecFile,vimOper,vimNumber,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
  95. syn match   vimFunctionError    "\<fu\%[nction]!\=\s\+\U.\{-}("me=e-1    contains=vimFuncKey,vimFuncBlank nextgroup=vimFuncBody
  96. syn match   vimFunction    "\<fu\%[nction]!\=\s\+\(<[sS][iI][dD]>\|s:\|\u\)\w*("me=e-1    contains=@vimFuncList nextgroup=vimFuncBody
  97. syn region  vimFuncBody  contained    start=")"    end="\<endf"    contains=@vimFuncBodyList
  98. syn match   vimFuncVar   contained    "a:\(\I\i*\|\d\+\)"
  99. syn match   vimFuncSID   contained    "<[sS][iI][dD]>\|\<s:"
  100. syn keyword vimFuncKey   contained    fu[nction]
  101. syn match   vimFuncBlank contained    "\s\+"
  102.  
  103. syn keyword vimPattern  contained    start    skip    end
  104.  
  105. " Operators
  106. syn match vimOper    "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}"    skipwhite nextgroup=vimString,vimSpecFile
  107. syn match vimOper    "||\|&&\|+\|-\|\."    skipwhite nextgroup=vimString,vimSpecFile
  108.  
  109. " Special Filenames, Modifiers, Extension Removal
  110. syn match vimSpecFile    "<c\(word\|WORD\)>"    nextgroup=vimSpecFileMod,vimSubst
  111. syn match vimSpecFile    "<\([acs]file\|amatch\|abuf\)>"    nextgroup=vimSpecFileMod,vimSubst
  112. syn match vimSpecFile    "\s%[ \t:]"ms=s+1,me=e-1    nextgroup=vimSpecFileMod,vimSubst
  113. syn match vimSpecFile    "\s%$"ms=s+1    nextgroup=vimSpecFileMod,vimSubst
  114. syn match vimSpecFile    "\s%<"ms=s+1,me=e-1    nextgroup=vimSpecFileMod,vimSubst
  115. syn match vimSpecFile    "#\d\+\|[#%]<\>"    nextgroup=vimSpecFileMod,vimSubst
  116. syn match vimSpecFileMod    "\(:[phtre]\)\+"    contained
  117.  
  118. " User-Specified Commands
  119. syn 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
  120. syn keyword vimUserCommand    contained    com[mand]
  121. syn match   vimUserCmd    "\<com\%[mand]!\=\>.*$"    contains=vimUserAttrb,vimUserCommand,@vimUserCmdList
  122. syn match   vimUserAttrb    contained    "-n\%[args]=[01*?+]"    contains=vimUserAttrbKey,vimOper
  123. syn match   vimUserAttrb    contained    "-com\%[plete]="    contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
  124. syn match   vimUserAttrb    contained    "-ra\%[nge]\(=%\|=\d\+\)\="    contains=vimNumber,vimOper,vimUserAttrbKey
  125. syn match   vimUserAttrb    contained    "-cou\%[nt]=\d\+"    contains=vimNumber,vimOper,vimUserAttrbKey
  126. syn match   vimUserAttrb    contained    "-bang\=\>"    contains=vimOper,vimUserAttrbKey
  127. syn match   vimUserAttrb    contained    "-bar\>"    contains=vimOper,vimUserAttrbKey
  128. syn match   vimUserAttrb    contained    "-re\%[gister]\>"    contains=vimOper,vimUserAttrbKey
  129. syn match   vimUserCmdError    contained    "\S\+\>"
  130. syn keyword vimUserAttrbKey    contained    bar    ban[g]    cou[nt]    ra[nge]
  131. syn keyword vimUserAttrbKey    contained    com[plete]    n[args]    re[gister]
  132. syn keyword vimUserAttrbCmplt    contained    augroup    environment    function    mapping    tag
  133. syn keyword vimUserAttrbCmplt    contained    buffer    event    help    menu    tag_listfiles
  134. syn keyword vimUserAttrbCmplt    contained    command    expression    highlight    option    var
  135. syn keyword vimUserAttrbCmplt    contained    dir    file
  136.  
  137. " Numbers
  138. " =======
  139. syn match vimNumber    "\<\d\+\([lL]\|\.\d\+\)\="
  140. syn match vimNumber    "-\d\+\([lL]\|\.\d\+\)\="
  141. syn match vimNumber    "\<0[xX]\x\+"
  142. syn match vimNumber    "#\x\{6}"
  143.  
  144. " Errors
  145. " ======
  146. syn match  vimElseIfErr    "\<else\s\+if\>"
  147.  
  148. " Lower Priority Comments: after some vim commands...
  149. " =======================
  150. syn match  vimComment    excludenl +\s"[^\-:.%#=*].*$+lc=1    contains=@vimCommentGroup,vimCommentString
  151. syn match  vimComment    +\<endif\s\+".*$+lc=5    contains=@vimCommentGroup,vimCommentString
  152. syn match  vimComment    +\<else\s\+".*$+lc=4    contains=@vimCommentGroup,vimCommentString
  153. syn region vimCommentString    contained oneline start='\S\s\+"'ms=s+1    end='"'
  154.  
  155. " Environment Variables
  156. " =====================
  157. syn match vimEnvvar    "\$\I\i*"
  158. syn match vimEnvvar    "\${\I\i*}"
  159.  
  160. " Try to catch strings, if nothing else matches (therefore it must precede the others!)
  161. "  vimEscapeBrace handles ["]  []"] (ie. "s don't terminate string inside [])
  162. syn region vimEscapeBrace    oneline contained transparent    start="[^\\]\(\\\\\)*\[\^\=\]\=" skip="\\\\\|\\\]" end="\]"me=e-1
  163. syn match  vimPatSepErr    contained    "\\)"
  164. syn match  vimPatSep    contained    "\\|"
  165. syn region vimPatSepZone    contained transparent matchgroup=vimPatSep start="\\%\=(" skip="\\\\" end="\\)"    contains=@vimStringGroup
  166. syn region vimPatRegion    contained transparent matchgroup=vimPatSep start="\\[z%]\=(" end="\\)"    contains=@vimSubstList oneline
  167. syn match  vimNotPatSep    contained    "\\\\"
  168. syn cluster vimStringGroup    contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone
  169. syn region vimString    oneline keepend    start=+[^:a-zA-Z>!\\]"+lc=1 skip=+\\\\\|\\"+ end=+"+    contains=@vimStringGroup
  170. syn region vimString    oneline keepend    start=+[^:a-zA-Z>!\\]'+lc=1 end=+'+    contains=@vimStringGroup
  171. syn region vimString    oneline    start=+=!+lc=1    skip=+\\\\\|\\!+ end=+!+    contains=@vimStringGroup
  172. syn region vimString    oneline    start="=+"lc=1    skip="\\\\\|\\+" end="+"    contains=@vimStringGroup
  173. syn region vimString    oneline    start="[^\\]+\s*[^a-zA-Z0-9. \t]"lc=1 skip="\\\\\|\\+" end="+"    contains=@vimStringGroup
  174. syn region vimString    oneline    start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"    contains=@vimStringGroup
  175. syn match  vimString    contained    +"[^"]*\\$+    skipnl nextgroup=vimStringCont
  176. syn match  vimStringCont    contained    +\(\\\\\|.\)\{-}[^\\]"+
  177.  
  178. " Substitutions
  179. " =============
  180. syn cluster vimSubstList    contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
  181. syn cluster vimSubstRepList    contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
  182. syn cluster vimSubstList    add=vimCollection
  183. syn match   vimSubst    "\(:\+\s*\|^\s*\||\s*\)\<s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat
  184. syn match   vimSubst1       contained    "s\%[ubstitute]\>"    nextgroup=vimSubstPat
  185. syn region  vimSubstPat     contained    matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1     contains=@vimSubstList    nextgroup=vimSubstRep4    oneline
  186. syn region  vimSubstRep4    contained    matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList    nextgroup=vimSubstFlagErr
  187. syn region  vimCollection   contained transparent    start="\\\@<!\[" skip="\\\[" end="\]"    contains=vimCollClass
  188. syn match   vimCollClassErr contained    "\[:.\{-\}:\]"
  189. syn match   vimCollClass    contained transparent    "\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
  190. syn match   vimSubstSubstr  contained    "\\z\=\d"
  191. syn match   vimSubstTwoBS   contained    "\\\\"
  192. syn match   vimSubstFlagErr contained    "[^< \t\r]\+" contains=vimSubstFlags
  193. syn match   vimSubstFlags   contained    "[&cegiIpr]\+"
  194.  
  195. " 'String'
  196. syn match  vimString    "[^(,]'[^']\{-}'"lc=1    contains=@vimStringGroup
  197.  
  198. " Marks, Registers, Addresses, Filters
  199. syn match  vimMark    "[!,:]'[a-zA-Z0-9]"lc=1
  200. syn match  vimMark    "'[a-zA-Z0-9][,!]"me=e-1
  201. syn match  vimMark    "'[<>][,!]"me=e-1
  202. syn match  vimMark    "\<norm\s'[a-zA-Z0-9]"lc=5
  203. syn match  vimMark    "\<normal\s'[a-zA-Z0-9]"lc=7
  204. syn match  vimPlainMark contained    "'[a-zA-Z0-9]"
  205.  
  206. syn match  vimRegister    '[^(,;.]"[a-zA-Z0-9.%#:_\-/][^a-zA-Z_"]'lc=1,me=e-1
  207. syn match  vimRegister    '\<norm\s\+"[a-zA-Z0-9]'lc=5
  208. syn match  vimRegister    '\<normal\s\+"[a-zA-Z0-9]'lc=7
  209. syn match  vimPlainRegister contained    '"[a-zA-Z0-9\-:.%#*+=]'
  210.  
  211. syn match  vimAddress    ",[.$]"lc=1    skipwhite nextgroup=vimSubst1
  212. syn match  vimAddress    "%\a"me=e-1    skipwhite nextgroup=vimString,vimSubst1
  213.  
  214. syn match  vimFilter contained    "^!.\{-}\(|\|$\)"    contains=vimSpecFile
  215. syn match  vimFilter contained    "\A!.\{-}\(|\|$\)"ms=s+1    contains=vimSpecFile
  216.  
  217. " Complex repeats (:h complex-repeat)
  218. syn match  vimCmplxRepeat    '[^a-zA-Z_/\\]q[0-9a-zA-Z"]'lc=1
  219. syn match  vimCmplxRepeat    '@[0-9a-z".=@:]'
  220.  
  221. " Set command and associated set-options (vimOptions) with comment
  222. syn region vimSet    matchgroup=vimCommand start="\<setlocal\|set\>" end="|"me=e-1 end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString
  223. syn region vimSetEqual  contained    start="="    skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation
  224. syn region vimSetString contained    start=+="+hs=s+1    skip=+\\\\\|\\"+  end=+"+    contains=vimCtrlChar
  225. syn match  vimSetSep    contained    "[,:]"
  226.  
  227. " Let
  228. " ===
  229. syn keyword vimLet    let    unl[et]    skipwhite nextgroup=vimVar
  230.  
  231. " Autocmd
  232. " =======
  233. syn match   vimAutoEventList    contained    "\(!\s\+\)\=\(\a\+,\)*\a\+"    contains=vimAutoEvent nextgroup=vimAutoCmdSpace
  234. syn match   vimAutoCmdSpace    contained    "\s\+"    nextgroup=vimAutoCmdSfxList
  235. syn match   vimAutoCmdSfxList    contained    "\S*"
  236. syn keyword vimAutoCmd    au[tocmd] do[autocmd] doautoa[ll]    skipwhite nextgroup=vimAutoEventList
  237.  
  238. " Echo and Execute -- prefer strings!
  239. " ================
  240. syn region  vimEcho    oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFuncName,vimString,vimOper,varVar
  241. syn region  vimExecute    oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimIsCommand,vimString,vimOper,vimVar,vimNotation
  242. syn match   vimEchoHL    "echohl\="    skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
  243. syn case ignore
  244. syn keyword vimEchoHLNone    none
  245. syn case match
  246.  
  247. " Maps
  248. " ====
  249. syn cluster vimMapGroup    contains=vimMapBang,vimMapLhs,vimMapMod
  250. syn keyword vimMap    cm[ap] cno[remap] im[ap] ino[remap] map nm[ap] nn[oremap] no[remap] om[ap] ono[remap] vm[ap] vn[oremap] skipwhite nextgroup=@vimMapGroup
  251. syn match   vimMapLhs    contained    "\S\+"    contains=vimNotation,vimCtrlChar
  252. syn match   vimMapBang   contained    "!"    skipwhite nextgroup=vimMapLhs
  253. syn match   vimMapMod    contained    "\c<\(buffer\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMapGroup
  254. syn case ignore
  255. syn keyword vimMapModKey contained    buffer    leader    localleader    plug    script    sid    silent    unique
  256. syn case match
  257.  
  258. " Menus
  259. " =====
  260. syn keyword vimCommand    am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=vimMenuPriority,vimMenuName,vimMenuSilent
  261. syn match   vimMenuName    "[^ \t\\<]\+"    contained nextgroup=vimMenuNameMore,vimMenuMap
  262. syn match   vimMenuPriority    "\d\+\(\.\d\+\)*"    contained skipwhite nextgroup=vimMenuName
  263. syn match   vimMenuNameMore    "\\\s\|<[tT][aA][bB]>\|\\\."    contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
  264. syn match   vimMenuSilent    "<[sS][iI][lL][eE][nN][tT]>"    contained skipwhite nextgroup=vimMenuName,vimMenuPriority
  265. syn match   vimMenuMap    "\t"    contained skipwhite nextgroup=@vimMapGroup
  266.  
  267. " Angle-Bracket Notation (tnx to Michael Geddes)
  268. " ======================
  269. syn case ignore
  270. syn match vimNotation    "\(\\\|<lt>\)\=<\([scam]-\)\{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
  271. syn match vimNotation    "\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>"    contains=vimBracket
  272. syn match vimNotation    "\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>"    contains=vimBracket
  273. syn match vimNotation    '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1    contains=vimBracket
  274. syn match vimNotation    '\(\\\|<lt>\)\=<\(line[12]\|count\|bang\|reg\|args\|lt\|[qf]-args\)>'    contains=vimBracket
  275. syn match vimBracket contained    "[\\<>]"
  276. syn case match
  277.  
  278. " Syntax
  279. "=======
  280. syn match   vimGroupList    contained    "@\=[^ \t,]*"    contains=vimGroupSpecial,vimPatSep
  281. syn match   vimGroupList    contained    "@\=[^ \t,]*,"    nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
  282. syn keyword vimGroupSpecial    contained    ALL    ALLBUT
  283. syn match   vimSynError    contained    "\i\+"
  284. syn match   vimSynError    contained    "\i\+="    nextgroup=vimGroupList
  285. syn match   vimSynContains    contained    "\<contain\(s\|edin\)="    nextgroup=vimGroupList
  286. syn match   vimSynKeyContainedin    contained    "\<containedin="    nextgroup=vimGroupList
  287. syn match   vimSynNextgroup    contained    "nextgroup="    nextgroup=vimGroupList
  288.  
  289. syn match   vimSyntax    "\<sy\%[ntax]\>"    contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
  290. syn match   vimAuSyntax    contained    "\s+sy\%[ntax]"    contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
  291.  
  292. " Syntax: case
  293. syn keyword vimSynType    contained    case    skipwhite nextgroup=vimSynCase,vimSynCaseError
  294. syn match   vimSynCaseError    contained    "\i\+"
  295. syn keyword vimSynCase    contained    ignore    match
  296.  
  297. " Syntax: clear
  298. syn keyword vimSynType    contained    clear    skipwhite nextgroup=vimGroupList
  299.  
  300. " Syntax: cluster
  301. syn keyword vimSynType    contained    cluster    skipwhite nextgroup=vimClusterName
  302. syn region  vimClusterName    contained    matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
  303. syn match   vimGroupAdd    contained    "add="    nextgroup=vimGroupList
  304. syn match   vimGroupRem    contained    "remove="    nextgroup=vimGroupList
  305.  
  306. " Syntax: include
  307. syn keyword vimSynType    contained    include    skipwhite nextgroup=vimGroupList
  308.  
  309. " Syntax: keyword
  310. syn cluster vimSynKeyGroup    contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
  311. syn keyword vimSynType    contained    keyword    skipwhite nextgroup=vimSynKeyRegion
  312. syn region  vimSynKeyRegion    contained keepend    matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
  313. syn match   vimSynKeyOpt    contained    "\<\(contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
  314.  
  315. " Syntax: match
  316. syn cluster vimSynMtchGroup    contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat
  317. syn keyword vimSynType    contained    match    skipwhite nextgroup=vimSynMatchRegion
  318. syn region  vimSynMatchRegion    contained keepend    matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
  319. syn match   vimSynMtchOpt    contained    "\<\(transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
  320.  
  321. " Syntax: off and on
  322. syn keyword vimSynType    contained    enable    list    manual    off    on    reset
  323.  
  324. " Syntax: region
  325. syn cluster vimSynRegPatGroup    contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr
  326. syn cluster vimSynRegGroup    contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
  327. syn keyword vimSynType    contained    region    skipwhite nextgroup=vimSynRegion
  328. syn region  vimSynRegion    contained keepend    matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
  329. syn match   vimSynRegOpt    contained    "\<\(transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
  330. syn match   vimSynReg    contained    "\(start\|skip\|end\)="he=e-1    nextgroup=vimSynRegPat
  331. syn match   vimSynMtchGrp    contained    "matchgroup="    nextgroup=vimGroup,vimHLGroup
  332. syn region  vimSynRegPat    contained extend    start="\z([[:punct:]]\)"  skip="\\\\\|\\\z1"  end="\z1"  contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
  333. syn match   vimSynPatMod    contained    "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
  334. syn match   vimSynPatMod    contained    "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
  335. syn match   vimSynPatMod    contained    "lc=\d\+"
  336. syn match   vimSynPatMod    contained    "lc=\d\+," nextgroup=vimSynPatMod
  337. syn region  vimSynPatRange    contained    start="\["    skip="\\\\\|\\]"   end="]"
  338. syn match   vimSynNotPatRange    contained    "\\\\\|\\\["
  339. syn match   vimMtchComment    contained    '"[^"]\+$'
  340.  
  341. " Syntax: sync
  342. " ============
  343. syn keyword vimSynType    contained    sync    skipwhite    nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinecont,vimSyncRegion
  344. syn match   vimSyncError    contained    "\i\+"
  345. syn keyword vimSyncC    contained    ccomment    clear    fromstart
  346. syn keyword vimSyncMatch    contained    match    skipwhite    nextgroup=vimSyncGroupName
  347. syn keyword vimSyncRegion    contained    region    skipwhite    nextgroup=vimSynReg
  348. syn keyword vimSyncLinecont    contained    linecont    skipwhite    nextgroup=vimSynRegPat
  349. syn match   vimSyncLines    contained    "\(min\|max\)\=lines="    nextgroup=vimNumber
  350. syn match   vimSyncGroupName    contained    "\k\+"    skipwhite    nextgroup=vimSyncKey
  351. syn match   vimSyncKey    contained    "\<groupthere\|grouphere\>"    skipwhite nextgroup=vimSyncGroup
  352. syn match   vimSyncGroup    contained    "\k\+"    skipwhite    nextgroup=vimSynRegPat,vimSyncNone
  353. syn keyword vimSyncNone    contained    NONE
  354.  
  355. " Additional IsCommand, here by reasons of precedence
  356. " ====================
  357. syn match vimIsCommand    "<Bar>\s*\a\+"    transparent contains=vimCommand,vimNotation
  358.  
  359. " Highlighting
  360. " ============
  361. syn cluster vimHighlightCluster    contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
  362. syn match   vimHighlight    "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
  363. syn match   vimHiBang    contained    "!"      skipwhite nextgroup=@vimHighlightCluster
  364.  
  365. syn match   vimHiGroup    contained    "\i\+"
  366. syn case ignore
  367. syn keyword vimHiAttrib    contained    none bold inverse italic reverse standout underline
  368. syn keyword vimFgBgAttrib    contained    none bg background fg foreground
  369. syn case match
  370. syn match   vimHiAttribList    contained    "\i\+"    contains=vimHiAttrib
  371. syn match   vimHiAttribList    contained    "\i\+,"he=e-1    contains=vimHiAttrib nextgroup=vimHiAttribList,vimHiAttrib
  372. syn case ignore
  373. syn 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
  374.  
  375. syn case match
  376. syn match   vimHiFontname    contained    "[a-zA-Z\-*]\+"
  377. syn match   vimHiGuiFontname    contained    "'[a-zA-Z\-* ]\+'"
  378. syn match   vimHiGuiRgb    contained    "#\x\{6}"
  379. syn match   vimHiCtermError    contained    "[^0-9]\i*"
  380.  
  381. " Highlighting: hi group key=arg ...
  382. syn cluster vimHiCluster contains=vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
  383. syn region vimHiKeyList    contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||"    contains=@vimHiCluster
  384. syn match  vimHiKeyError    contained    "\i\+="he=e-1
  385. syn match  vimHiTerm    contained    "[tT][eE][rR][mM]="he=e-1    nextgroup=vimHiAttribList
  386. syn match  vimHiStartStop    contained    "\([sS][tT][aA][rR][tT]\|[sS][tT][oO][pP]\)="he=e-1    nextgroup=vimHiTermcap,vimOption
  387. syn match  vimHiCTerm    contained    "[cC][tT][eE][rR][mM]="he=e-1    nextgroup=vimHiAttribList
  388. syn match  vimHiCtermFgBg    contained    "[cC][tT][eE][rR][mM][fFbB][gG]="he=e-1    nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
  389. syn match  vimHiGui    contained    "[gG][uU][iI]="he=e-1    nextgroup=vimHiAttribList
  390. syn match  vimHiGuiFont    contained    "[fF][oO][nN][tT]="he=e-1    nextgroup=vimHiFontname
  391. syn match  vimHiGuiFgBg    contained    "[gG][uU][iI][fFbB][gG]="he=e-1    nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
  392. syn match  vimHiTermcap    contained    "\S\+"    contains=vimNotation
  393.  
  394. " Highlight: clear
  395. syn keyword vimHiClear    contained    clear    nextgroup=vimHiGroup
  396.  
  397. " Highlight: link
  398. syn region vimHiLink    contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$"    contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
  399.  
  400. " Control Characters
  401. " ==================
  402. syn match vimCtrlChar    "[- -]"
  403.  
  404. " Beginners - Patterns that involve ^
  405. " =========
  406. syn match  vimLineComment    +^[ \t:]*".*$+    contains=@vimCommentGroup,vimCommentString,vimCommentTitle
  407. syn match  vimCommentTitle    '"\s*\u\w*\(\s\+\u\w*\)*:'hs=s+1    contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
  408. syn match  vimContinue    "^\s*\\"
  409. syn region vimString    start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
  410. syn match  vimCommentTitleLeader    '"\s\+'ms=s+1    contained
  411.  
  412. " Scripts  : perl,ruby : Benoit Cerrina
  413. " =======    python,tcl: Johannes Zellner
  414.  
  415. " allow users to prevent embedded script syntax highlighting
  416. " when vim doesn't have perl/python/ruby/tcl support.  Do
  417. " so by setting g:vimembedscript= 0 in the user's <.vimrc>.
  418. if !exists("g:vimembedscript")
  419.  let g:vimembedscript= 1
  420. endif
  421.  
  422. " [-- perl --]
  423. if (has("perl") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/perl.vim")
  424.  unlet! b:current_syntax
  425.  syn include @vimPerlScript <sfile>:p:h/perl.vim
  426.  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
  427.  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
  428. endif
  429.  
  430. " [-- ruby --]
  431. if (has("ruby") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/ruby.vim")
  432.  unlet! b:current_syntax
  433.  syn include @vimRubyScript <sfile>:p:h/ruby.vim
  434.  syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
  435.  syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
  436. endif
  437.  
  438. " [-- python --]
  439. if (has("python") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/python.vim")
  440.  unlet! b:current_syntax
  441.  syn include @vimPythonScript <sfile>:p:h/python.vim
  442.  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
  443.  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
  444. endif
  445.  
  446. " [-- tcl --]
  447. if (has("tcl") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/tcl.vim")
  448.  unlet! b:current_syntax
  449.  syn include @vimTclScript <sfile>:p:h/tcl.vim
  450.  syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
  451.  syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
  452. endif
  453.  
  454. " Synchronize (speed)
  455. "============
  456. if exists("b:vim_minlines")
  457.  exe "syn sync minlines=".b:vim_minlines
  458. endif
  459. if exists("b:vim_maxlines")
  460.  exe "syn sync maxlines=".b:vim_maxlines
  461. else
  462.  syn sync maxlines=60
  463. endif
  464. syn sync linecont    "^\s\+\\"
  465. syn sync match vimAugroupSyncA    groupthere NONE    "\<aug\%[roup]\>\s\+[eE][nN][dD]"
  466.  
  467. " Highlighting Settings
  468. " ====================
  469.  
  470. " The default highlighting.
  471. hi def link vimAuHighlight    vimHighlight
  472. hi def link vimSubst1    vimSubst
  473. hi def link vimBehaveModel    vimBehave
  474.  
  475. hi def link vimAddress    vimMark
  476. hi def link vimAugroupKey    vimCommand
  477. "  hi def link vimAugroupError    vimError
  478. hi def link vimAutoCmd    vimCommand
  479. hi def link vimAutoCmdOpt    vimOption
  480. hi def link vimAutoSet    vimCommand
  481. hi def link vimBehave    vimCommand
  482. hi def link vimBehaveError    vimError
  483. hi def link vimCollClassErr    vimError
  484. hi def link vimCommentString    vimString
  485. hi def link vimCondHL    vimCommand
  486. hi def link vimEchoHL    vimCommand
  487. hi def link vimEchoHLNone    vimGroup
  488. hi def link vimElseif    vimCondHL
  489. hi def link vimErrSetting    vimError
  490. hi def link vimFgBgAttrib    vimHiAttrib
  491. hi def link vimFTCmd    vimCommand
  492. hi def link vimFTOption    vimSynType
  493. hi def link vimFTError    vimError
  494. hi def link vimFunctionError    vimError
  495. hi def link vimFuncKey    vimCommand
  496. hi def link vimGroupAdd    vimSynOption
  497. hi def link vimGroupRem    vimSynOption
  498. hi def link vimHLGroup    vimGroup
  499. hi def link vimHiAttribList    vimError
  500. hi def link vimHiCTerm    vimHiTerm
  501. hi def link vimHiCtermError    vimError
  502. hi def link vimHiCtermFgBg    vimHiTerm
  503. hi def link vimHiGroup    vimGroupName
  504. hi def link vimHiGui    vimHiTerm
  505. hi def link vimHiGuiFgBg    vimHiTerm
  506. hi def link vimHiGuiFont    vimHiTerm
  507. hi def link vimHiGuiRgb    vimNumber
  508. hi def link vimHiKeyError    vimError
  509. hi def link vimHiStartStop    vimHiTerm
  510. hi def link vimHighlight    vimCommand
  511. hi def link vimInsert    vimString
  512. hi def link vimKeyCode    vimSpecFile
  513. hi def link vimKeyCodeError    vimError
  514. hi def link vimLet    vimCommand
  515. hi def link vimLineComment    vimComment
  516. hi def link vimMap    vimCommand
  517. hi def link vimMapMod    vimBracket
  518. hi def link vimMapModErr    vimError
  519. hi def link vimMapModKey    vimFuncSID
  520. hi def link vimMapBang    vimCommand
  521. hi def link vimMenuNameMore    vimMenuName
  522. hi def link vimMtchComment    vimComment
  523. hi def link vimNotFunc    vimCommand
  524. hi def link vimNotPatSep    vimString
  525. hi def link vimPatSepErr    vimPatSep
  526. hi def link vimPlainMark    vimMark
  527. hi def link vimPlainRegister    vimRegister
  528. hi def link vimSetString    vimString
  529. hi def link vimSpecFileMod    vimSpecFile
  530. hi def link vimStringCont    vimString
  531. hi def link vimSubst    vimCommand
  532. hi def link vimSubstTwoBS    vimString
  533. hi def link vimSubstFlagErr    vimError
  534. hi def link vimSynCaseError    vimError
  535. hi def link vimSynContains    vimSynOption
  536. hi def link vimSynKeyContainedin    vimSynContains
  537. hi def link vimSynKeyOpt    vimSynOption
  538. hi def link vimSynMtchGrp    vimSynOption
  539. hi def link vimSynMtchOpt    vimSynOption
  540. hi def link vimSynNextgroup    vimSynOption
  541. hi def link vimSynNotPatRange    vimSynRegPat
  542. hi def link vimSynPatRange    vimString
  543. hi def link vimSynRegOpt    vimSynOption
  544. hi def link vimSynRegPat    vimString
  545. hi def link vimSyntax    vimCommand
  546. hi def link vimSynType    vimSpecial
  547. hi def link vimSyncGroup    vimGroupName
  548. hi def link vimSyncGroupName    vimGroupName
  549. hi def link vimUserAttrb    vimSpecial
  550. hi def link vimUserAttrbCmplt    vimSpecial
  551. hi def link vimUserAttrbKey    vimOption
  552. hi def link vimUserCommand    vimCommand
  553.  
  554. hi def link vimAutoEvent    Type
  555. hi def link vimBracket    Delimiter
  556. hi def link vimCmplxRepeat    SpecialChar
  557. hi def link vimCommand    Statement
  558. hi def link vimComment    Comment
  559. hi def link vimCommentTitle    PreProc
  560. hi def link vimContinue    Special
  561. hi def link vimCtrlChar    SpecialChar
  562. hi def link vimElseIfErr    Error
  563. hi def link vimEnvvar    PreProc
  564. hi def link vimError    Error
  565. hi def link vimFuncName    Function
  566. hi def link vimFuncSID    Special
  567. hi def link vimFuncVar    Identifier
  568. hi def link vimGroup    Type
  569. hi def link vimGroupSpecial    Special
  570. hi def link vimHLMod    PreProc
  571. hi def link vimHiAttrib    PreProc
  572. hi def link vimHiTerm    Type
  573. hi def link vimKeyword    Statement
  574. hi def link vimMark    Number
  575. hi def link vimMenuName    PreProc
  576. hi def link vimNotation    Special
  577. hi def link vimNumber    Number
  578. hi def link vimOper    Operator
  579. hi def link vimOption    PreProc
  580. hi def link vimPatSep    SpecialChar
  581. hi def link vimPattern    Type
  582. hi def link vimRegister    SpecialChar
  583. hi def link vimScriptDelim    Comment
  584. hi def link vimSep    Delimiter
  585. hi def link vimSetSep    Statement
  586. hi def link vimSpecFile    Identifier
  587. hi def link vimSpecial    Type
  588. hi def link vimStatement    Statement
  589. hi def link vimString    String
  590. hi def link vimSubstDelim    Delimiter
  591. hi def link vimSubstFlags    Special
  592. hi def link vimSubstSubstr    SpecialChar
  593. hi def link vimSynCase    Type
  594. hi def link vimSynCaseError    Error
  595. hi def link vimSynError    Error
  596. hi def link vimSynOption    Special
  597. hi def link vimSynReg    Type
  598. hi def link vimSyncC    Type
  599. hi def link vimSyncError    Error
  600. hi def link vimSyncKey    Type
  601. hi def link vimSyncNone    Type
  602. hi def link vimTodo    Todo
  603. hi def link vimUserCmdError    Error
  604.  
  605. let b:current_syntax = "vim"
  606.