Problem: the image feature can be improved
Solution: Refactor the image feature, make use of the pixman library if
possible, add image_info(), image_add() and image_discard()
functions and the 'imageprotocol' option (Foxe Chen)
closes: #21234
Assisted-by: Claude
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
3540 lines
204 KiB
VimL
3540 lines
204 KiB
VimL
" Vim syntax file
|
|
" Language: Vim script
|
|
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
|
|
" Doug Kearns <dougkearns@gmail.com>
|
|
" Last Change: 2026 Sep 30
|
|
" Former Maintainer: Charles E. Campbell
|
|
|
|
" DO NOT CHANGE DIRECTLY.
|
|
" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
|
|
" (Search string "GEN_SYN_VIM:" in this file)
|
|
|
|
" Quit when a syntax file was already loaded {{{1
|
|
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
let s:keepcpo= &cpo
|
|
set cpo&vim
|
|
|
|
" Feature testing {{{1
|
|
|
|
" NOTE: vimsyn_force_vim9script and vimsyn_force_cmdline_window for internal use only
|
|
let s:vim9script = get(b:, "vimsyn_force_vim9script", v:false) || "\n" .. getline(1, 32)->join("\n") =~# '\nvim9s\%[cript]\>'
|
|
|
|
let s:cmdline_window = get(b:, "vimsyn_force_cmdline_window", v:false) || win_gettype() ==# "command"
|
|
|
|
function s:has(feature)
|
|
return has(a:feature) || index(get(g:, "vimsyn_vim_features", []), a:feature) != -1
|
|
endfunction
|
|
|
|
" Automatically generated keyword lists: {{{1
|
|
|
|
" vimTodo: contains common special-notices for comments {{{2
|
|
" Use the vimCommentGroup cluster to add your own.
|
|
syn keyword vimTodo contained COMBAK FIXME TODO XXX
|
|
syn cluster vimCommentGroup contains=vimTodo,@Spell
|
|
|
|
" regular vim commands {{{2
|
|
" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang'
|
|
syn keyword vimCommand contained al[l] ar[gs] arga[dd] argd[elete] argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] bN[ext] ba[ll] bad[d] balt bd[elete] bf[irst] bl[ast] bm[odified] bn[ext] bp[revious] br[ewind] brea[k] buffers bun[load] bw[ipeout] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] ce[nter] cex[pr] cf[ile] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] changes che[ckpath] checkt[ime] chi[story] cl[ist] clip[reset] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] col[der] colo[rscheme] comc[lear] comp[iler] con[tinue] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] delm[arks] defc[ompile] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] nextgroup=vimBang
|
|
syn keyword vimCommand contained diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] em[enu] endfo[r] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files fin[d] fina[lly] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldo[pen] go[to] gu[i] gv[im] helpc[lose] helpf[ind] helpt[ags] ha[rdcopy] ij[ump] il[ist] int[ro] ip[ut] is[earch] isp[lit] ju[mps] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lcl[ose] lcs[cope] le[ft] lex[pr] lf[ile] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lhi[story] ll lla[st] lli[st] lne[xt] lnew[er] lnf[ile] lo[adview] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lw[indow] nextgroup=vimBang
|
|
syn keyword vimCommand contained ls m[ove] marks mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] n[ext] nb[key] nbc[lose] nbs[tart] new noh[lsearch] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] packl[oadall] pb[uffer] pc[lose] ped[it] po[p] pp[op] pre[serve] prev[ious] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redr[aw] redraws[tatus] redrawt[abline] redrawtabp[anel] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] scr[iptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] nextgroup=vimBang
|
|
syn keyword vimCommand contained sf[ind] sfir[st] sh[ell] sim[alt] sig[n] sla[st] sn[ext] so[urce] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sre[wind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sync[bind] smi[le] tN[ext] ta[g] tags tabc[lose] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs te[aroff] tf[irst] tj[ump] tl[ast] tn[ext] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] up[date] ve[rsion] vi[sual] vie[w] viu[sage] vne[w] vs[plit] wN[ext] wa[ll] wi[nsize] winp[os] wl[restore] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] nextgroup=vimBang
|
|
syn keyword vimCommand contained x[it] xa[ll] xr[estore] y[ank] nextgroup=vimBang
|
|
syn match vimCommand_ contained "a\%(l\%[l]\|rga\%[dd]\|rgd\%[elete]\|rge\%[dit]\|rgu\%[ment]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "b\%(N\%[ext]\|a\%[ll]\|d\%[elete]\|f\%[irst]\|l\%[ast]\|m\%[odified]\|n\%[ext]\|p\%[revious]\|r\%[ewind]\|un\%[load]\|w\%[ipeout]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "c\%(N\%[ext]\|Nf\%[ile]\|abo\%[ve]\|ad\%[dbuffer]\|af\%[ter]\|b\%[uffer]\|be\%[fore]\|bel\%[ow]\|c\|e\%[nter]\|fir\%[st]\|getb\%[uffer]\|heckt\%[ime]\|hi\%[story]\|la\%[st]\|lo\%[se]\|n\%[ext]\|new\%[er]\|nf\%[ile]\|ol\%[der]\|ope\%[n]\|p\%[revious]\|pf\%[ile]\|q\%[uit]\|r\%[ewind]\|w\%[indow]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "d\%(iffg\%[et]\|iffpu\%[t]\|j\%[ump]\|li\%[st]\|s\%[earch]\|sp\%[lit]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "e\%(m\%[enu]\|xi\%[t]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "f\%(\%[ile]\|in\%[d]\|o\%[ld]\|oldc\%[lose]\|oldo\%[pen]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "go\%[to]\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "ha\%[rdcopy]\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "i\%(j\%[ump]\|l\%[ist]\|p\%[ut]\|s\%[earch]\|sp\%[lit]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "l\%(\%[ist]\|N\%[ext]\|Nf\%[ile]\|ab\%[ove]\|addb\%[uffer]\|af\%[ter]\|b\%[uffer]\|be\%[fore]\|bel\%[ow]\|cl\%[ose]\|e\%[ft]\|fir\%[st]\|getb\%[uffer]\|hi\%[story]\|l\|la\%[st]\|ne\%[xt]\|new\%[er]\|nf\%[ile]\|ol\%[der]\|op\%[en]\|p\%[revious]\|pf\%[ile]\|r\%[ewind]\|w\%[indow]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "m\%(\%[ove]\|es\%[sages]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "n\%(\%[ext]\|ew\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "o\%(\%[pen]\|n\%[ly]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "p\%(\%[rint]\|b\%[uffer]\|o\%[p]\|p\%[op]\|rev\%[ious]\|s\%[earch]\|t\%[ag]\|tN\%[ext]\|tf\%[irst]\|tn\%[ext]\|tp\%[revious]\|tr\%[ewind]\|u\%[t]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "q\%[uit]\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "r\%(\%[ead]\|es\%[ize]\|et\%[ab]\|i\%[ght]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "s\%(N\%[ext]\|a\%[rgument]\|al\%[l]\|b\%[uffer]\|bN\%[ext]\|ba\%[ll]\|bm\%[odified]\|bn\%[ext]\|bp\%[revious]\|cr\%[iptnames]\|f\%[ind]\|ig\%[n]\|n\%[ext]\|o\%[urce]\|pe\%[llgood]\|pellra\%[re]\|pellu\%[ndo]\|pellw\%[rong]\|pr\%[evious]\|ta\%[g]\|un\%[hide]\|v\%[iew]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "t\%(N\%[ext]\|a\%[g]\|abc\%[lose]\|abe\%[dit]\|abf\%[ind]\|abm\%[ove]\|abn\%[ext]\|abnew\|abo\%[nly]\|abp\%[revious]\|abN\%[ext]\|f\%[irst]\|n\%[ext]\|p\%[revious]\|r\%[ewind]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "u\%(\%[ndo]\|nh\%[ide]\|p\%[date]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "v\%(ne\%[w]\|s\%[plit]\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "w\%(N\%[ext]\|n\%[ext]\|p\%[revious]\|q\)\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "x\%[it]\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "y\%[ank]\>" nextgroup=vimBang
|
|
|
|
" lower priority :syn-match to allow for :command/function() distinction
|
|
" :chdir and :delete is handled specially elsewhere
|
|
syn match vimCommand contained "\<co\%[py]\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "co\%[py]\>" nextgroup=vimBang
|
|
syn match vimCommand contained "\<j\%[oin]\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "j\%[oin]\>" nextgroup=vimBang
|
|
syn match vimCommand contained "\<sp\%[lit]\>" nextgroup=vimBang
|
|
syn match vimCommand_ contained "sp\%[lit]\>" nextgroup=vimBang
|
|
syn match vimCommand contained "\<sw\%[apname]\>" nextgroup=vimBang
|
|
|
|
" commands starting with uppercase letter
|
|
syn keyword vimCommand contained N[ext] nextgroup=vimBang
|
|
syn match vimCommand_ contained "N\%[ext]\>" nextgroup=vimBang
|
|
syn keyword vimCommand contained P[rint]
|
|
syn match vimCommand_ contained "P\%[rint]\>"
|
|
syn keyword vimCommand contained X
|
|
|
|
" GEN_SYN_VIM: vimCommand modifier, START_STR='syn keyword vimCommandModifier contained', END_STR='skipwhite skipnl nextgroup=vimCommandModifierBang,@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func'
|
|
syn keyword vimCommandModifier contained abo[veleft] bel[owright] bo[tright] hid[e] hor[izontal] kee[pmarks] keepj[umps] keepp[atterns] keepa[lt] lefta[bove] leg[acy] loc[kmarks] noa[utocmd] nos[wapfile] rightb[elow] san[dbox] sil[ent] tab to[pleft] uns[ilent] verb[ose] vert[ical] vim9[cmd] skipwhite skipnl nextgroup=vimCommandModifierBang,@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func
|
|
syn match vimCommandModifier_ contained "hid\%[e]\>" skipwhite skipnl nextgroup=vimCommandModifierBang,@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func
|
|
syn match vimCommandModifier_ contained "tab\>" skipwhite skipnl nextgroup=vimCommandModifierBang,@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func
|
|
syn match vimCommandModifier_ contained "verb\%[ose]\>" skipwhite skipnl nextgroup=vimCommandModifierBang,@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func
|
|
" modifiers supporting bang, :filter is handled specially elsewhere
|
|
syn keyword vimCommandModifier contained sil[ent] skipwhite skipnl nextgroup=vimCommandModifierBang,@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func
|
|
|
|
syn match vimCommandModifierBang contained "\a\@1<=!" skipwhite skipnl nextgroup=@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func
|
|
|
|
" lower priority :syn-match to allow for :command/function() distinction
|
|
syn match vimCommandModifier contained "\<bro\%[wse]\>" skipwhite skipnl nextgroup=vimCommandModifierBang,@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func
|
|
syn match vimCommandModifier contained "\<conf\%[irm]\>" skipwhite skipnl nextgroup=vimCommandModifierBang,@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func
|
|
|
|
syn match vimCommandModifierContinue contained "^\s*\\" skipwhite skipnl nextgroup=@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func contains=vimLeadingWhitespace
|
|
syn match vimCommandModifierContinueComment contained '^\s*["#]\\ .*' skipwhite skipnl nextgroup=@vimCommandModifierContinue contains=vimLeadingWhitespace
|
|
syn cluster vimCommandModifierContinue contains=vimCommandModifierContinue,vimCommandModifierContinueComment
|
|
|
|
syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man Over Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
|
|
|
|
" vimOptions are caught only when contained in a vimSet {{{2
|
|
" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
|
|
syn keyword vimOption contained al aleph ari allowrevins ambw ambiwidth arab arabic arshape arabicshape acd autochdir ac autocomplete acl autocompletedelay act autocompletetimeout ai autoindent ar autoread asd autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert chi chistory cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw cinwords cb clipboard cpm clipmethod ch cmdheight cwh cmdwinheight cc colorcolumn skipwhite nextgroup=vimSetEqual,vimSetMod
|
|
syn keyword vimOption contained co columns com comments cms commentstring cp compatible cpt complete cfu completefunc cia completeitemalign cot completeopt cpp completepopup csl completeslash cto completetimeout cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dia diffanchors dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells ef errorfile skipwhite nextgroup=vimSetEqual,vimSetMod
|
|
syn keyword vimOption contained efm errorformat ek esckeys ei eventignore eiw eventignorewin et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats fic fileignorecase ft filetype fcs fillchars ffu findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight skipwhite nextgroup=vimSetEqual,vimSetMod
|
|
syn keyword vimOption contained hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey ipc imageprotocol imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine skipwhite nextgroup=vimSetEqual,vimSetMod
|
|
syn keyword vimOption contained mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot msc maxsearchcount mis menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls modelines mlst modelinestrict ma modifiable mod modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc ost osctimeoutlen pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader skipwhite nextgroup=vimSetEqual,vimSetMod
|
|
syn keyword vimOption contained pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt pb pumborder ph pumheight pmw pummaxwidth pumopt pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sop scrolloffpad sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote skipwhite nextgroup=vimSetEqual,vimSetMod
|
|
syn keyword vimOption contained sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline stlo statuslineopt su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tsc tagsecure skipwhite nextgroup=vimSetEqual,vimSetMod
|
|
syn keyword vimOption contained tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors trz termresize tsy termsync twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore skipwhite nextgroup=vimSetEqual,vimSetMod
|
|
syn keyword vimOption contained wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight whl winhighlight wmh winminheight wmw winminwidth winptydll wiw winwidth wse wlseat wtm wltimeoutlen wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes skipwhite nextgroup=vimSetEqual,vimSetMod
|
|
|
|
" vimOptions: These are the turn-off setting variants {{{2
|
|
" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
|
|
syn keyword vimOption contained noari noallowrevins noarab noarabic noarshape noarabicshape noacd noautochdir noac noautocomplete noai noautoindent noar noautoread noasd noautoshelldir noaw noautowrite noawa noautowriteall nobk nobackup nobeval noballooneval nobevalterm noballoonevalterm nobin nobinary nobomb nobri nobreakindent nobl nobuflisted nocdh nocdhome nocin nocindent nocp nocompatible nocf noconfirm noci nocopyindent nocsre nocscoperelative nocst nocscopetag nocsverb nocscopeverbose nocrb nocursorbind nocuc nocursorcolumn nocul nocursorline nodeco nodelcombine nodiff nodg nodigraph noed noedcompatible noemo noemoji noeof noendoffile noeol noendofline noea noequalalways noeb noerrorbells noek noesckeys noet noexpandtab noex noexrc nofic nofileignorecase
|
|
syn keyword vimOption contained nofixeol nofixendofline nofen nofoldenable nofs nofsync nogd nogdefault noguipty nohid nohidden nohk nohkmap nohkp nohkmapp nohls nohlsearch noicon noic noignorecase noimc noimcmdline noimd noimdisable nois noincsearch noinf noinfercase noim noinsertmode nojs nojoinspaces nolnr nolangnoremap nolrm nolangremap nolz nolazyredraw nolbr nolinebreak nolisp nolist nolpl noloadplugins nomagic noml nomodeline nomle nomodelineexpr nomlst nomodelinestrict noma nomodifiable nomod nomodified nomore nomousef nomousefocus nomh nomousehide nomousemev nomousemoveevent nonu nonumber noodev noopendevice nopaste nopi nopreserveindent nopvw nopreviewwindow noprompt noro noreadonly nornu norelativenumber noremap nors norestorescreen nori norevins norl norightleft
|
|
syn keyword vimOption contained noru noruler noscb noscrollbind noscf noscrollfocus nosecure nossl noshellslash nostmp noshelltemp nosr noshiftround nosn noshortname nosc noshowcmd nosft noshowfulltag nosm noshowmatch nosmd noshowmode noscs nosmartcase nosi nosmartindent nosta nosmarttab nosms nosmoothscroll nospell nosb nosplitbelow nospr nosplitright nosol nostartofline noswf noswapfile notbs notagbsearch notr notagrelative notsc notagsecure notgst notagstack notbidi notermbidi notgc notermguicolors notsy notermsync noterse nota notextauto notx notextmode notop notildeop noto notimeout notitle nottimeout notbi nottybuiltin notf nottyfast noudf noundofile novb novisualbell nowarn nowiv noweirdinvert nowic nowildignorecase nowmnu nowildmenu nowfb nowinfixbuf nowfh nowinfixheight
|
|
syn keyword vimOption contained nowfw nowinfixwidth nowrap nows nowrapscan nowrite nowa nowriteany nowb nowritebackup noxtermcodes
|
|
|
|
" vimOptions: These are the invertible variants {{{2
|
|
" GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR=''
|
|
syn keyword vimOption contained invari invallowrevins invarab invarabic invarshape invarabicshape invacd invautochdir invac invautocomplete invai invautoindent invar invautoread invasd invautoshelldir invaw invautowrite invawa invautowriteall invbk invbackup invbeval invballooneval invbevalterm invballoonevalterm invbin invbinary invbomb invbri invbreakindent invbl invbuflisted invcdh invcdhome invcin invcindent invcp invcompatible invcf invconfirm invci invcopyindent invcsre invcscoperelative invcst invcscopetag invcsverb invcscopeverbose invcrb invcursorbind invcuc invcursorcolumn invcul invcursorline invdeco invdelcombine invdiff invdg invdigraph inved invedcompatible invemo invemoji inveof invendoffile inveol invendofline invea invequalalways inveb inverrorbells
|
|
syn keyword vimOption contained invek invesckeys invet invexpandtab invex invexrc invfic invfileignorecase invfixeol invfixendofline invfen invfoldenable invfs invfsync invgd invgdefault invguipty invhid invhidden invhk invhkmap invhkp invhkmapp invhls invhlsearch invicon invic invignorecase invimc invimcmdline invimd invimdisable invis invincsearch invinf invinfercase invim invinsertmode invjs invjoinspaces invlnr invlangnoremap invlrm invlangremap invlz invlazyredraw invlbr invlinebreak invlisp invlist invlpl invloadplugins invmagic invml invmodeline invmle invmodelineexpr invmlst invmodelinestrict invma invmodifiable invmod invmodified invmore invmousef invmousefocus invmh invmousehide invmousemev invmousemoveevent invnu invnumber invodev invopendevice invpaste
|
|
syn keyword vimOption contained invpi invpreserveindent invpvw invpreviewwindow invprompt invro invreadonly invrnu invrelativenumber invremap invrs invrestorescreen invri invrevins invrl invrightleft invru invruler invscb invscrollbind invscf invscrollfocus invsecure invssl invshellslash invstmp invshelltemp invsr invshiftround invsn invshortname invsc invshowcmd invsft invshowfulltag invsm invshowmatch invsmd invshowmode invscs invsmartcase invsi invsmartindent invsta invsmarttab invsms invsmoothscroll invspell invsb invsplitbelow invspr invsplitright invsol invstartofline invswf invswapfile invtbs invtagbsearch invtr invtagrelative invtsc invtagsecure invtgst invtagstack invtbidi invtermbidi invtgc invtermguicolors invtsy invtermsync invterse invta invtextauto
|
|
syn keyword vimOption contained invtx invtextmode invtop invtildeop invto invtimeout invtitle invttimeout invtbi invttybuiltin invtf invttyfast invudf invundofile invvb invvisualbell invwarn invwiv invweirdinvert invwic invwildignorecase invwmnu invwildmenu invwfb invwinfixbuf invwfh invwinfixheight invwfw invwinfixwidth invwrap invws invwrapscan invwrite invwa invwriteany invwb invwritebackup invxtermcodes
|
|
" termcap codes (which can also be set) {{{2
|
|
" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
|
|
syn keyword vimOption contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f t_8b t_8u t_xo t_BS t_ES skipwhite nextgroup=vimSetEqual,vimSetMod
|
|
" term key codes
|
|
syn keyword vimOption contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 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_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_ku
|
|
syn match vimOption contained "t_%1"
|
|
syn match vimOption contained "t_#2"
|
|
syn match vimOption contained "t_#4"
|
|
syn match vimOption contained "t_@7"
|
|
syn match vimOption contained "t_*7"
|
|
syn match vimOption contained "t_&8"
|
|
syn match vimOption contained "t_%i"
|
|
syn match vimOption contained "t_k;"
|
|
|
|
" vimOptions: These are the variable names {{{2
|
|
" GEN_SYN_VIM: vimOption normal variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
|
|
syn keyword vimOptionVarName contained al aleph ari allowrevins ambw ambiwidth arab arabic arshape arabicshape acd autochdir ac autocomplete acl autocompletedelay act autocompletetimeout ai autoindent ar autoread asd autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert chi chistory cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw cinwords cb clipboard cpm clipmethod ch cmdheight cwh cmdwinheight cc colorcolumn
|
|
syn keyword vimOptionVarName contained co columns com comments cms commentstring cp compatible cpt complete cfu completefunc cia completeitemalign cot completeopt cpp completepopup csl completeslash cto completetimeout cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dia diffanchors dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells ef errorfile
|
|
syn keyword vimOptionVarName contained efm errorformat ek esckeys ei eventignore eiw eventignorewin et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats fic fileignorecase ft filetype fcs fillchars ffu findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight
|
|
syn keyword vimOptionVarName contained hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey ipc imageprotocol imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lhi lhistory lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime
|
|
syn keyword vimOptionVarName contained mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot msc maxsearchcount mis menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls modelines mlst modelinestrict ma modifiable mod modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc ost osctimeoutlen pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont
|
|
syn keyword vimOptionVarName contained pheader printheader pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt pb pumborder ph pumheight pmw pummaxwidth pumopt pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sop scrolloffpad sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype
|
|
syn keyword vimOptionVarName contained sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline stpl showtabpanel ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline stlo statuslineopt su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax tpl tabpanel tplo tabpanelopt ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength
|
|
syn keyword vimOptionVarName contained tr tagrelative tag tags tsc tagsecure tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors trz termresize tsy termsync twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert
|
|
syn keyword vimOptionVarName contained ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight whl winhighlight wmh winminheight wmw winminwidth winptydll wiw winwidth wse wlseat wtm wltimeoutlen wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes
|
|
" GEN_SYN_VIM: vimOption term output code variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
|
|
syn keyword vimOptionVarName contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f t_8b t_8u t_xo t_BS t_ES
|
|
syn keyword vimOptionVarName contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 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_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_ku
|
|
syn match vimOptionVarName contained "t_%1"
|
|
syn match vimOptionVarName contained "t_#2"
|
|
syn match vimOptionVarName contained "t_#4"
|
|
syn match vimOptionVarName contained "t_@7"
|
|
syn match vimOptionVarName contained "t_*7"
|
|
syn match vimOptionVarName contained "t_&8"
|
|
syn match vimOptionVarName contained "t_%i"
|
|
syn match vimOptionVarName contained "t_k;"
|
|
|
|
" unsupported settings: some were supported by vi but don't do anything in vim {{{2
|
|
" GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR=''
|
|
syn keyword vimErrSetting contained akm altkeymap anti antialias ap autoprint bf beautify biosk bioskey consk conskey fk fkmap fl flash gr graphic ht hardtabs macatsui mesg novice open opt optimize oft osfiletype redraw slow slowopen sourceany w1200 w300 w9600 wst wlsteal
|
|
syn keyword vimErrSetting contained noakm noaltkeymap noanti noantialias noap noautoprint nobf nobeautify nobiosk nobioskey noconsk noconskey nofk nofkmap nofl noflash nogr nographic nomacatsui nomesg nonovice noopen noopt nooptimize noredraw noslow noslowopen nosourceany nowst nowlsteal
|
|
syn keyword vimErrSetting contained invakm invaltkeymap invanti invantialias invap invautoprint invbf invbeautify invbiosk invbioskey invconsk invconskey invfk invfkmap invfl invflash invgr invgraphic invmacatsui invmesg invnovice invopen invopt invoptimize invredraw invslow invslowopen invsourceany invwst invwlsteal
|
|
|
|
" AutoCmd Events {{{2
|
|
syn case ignore
|
|
" GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR='skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern'
|
|
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 CmdlineChanged CmdlineEnter CmdlineLeave CmdlineLeavePre CmdUndefined CmdwinEnter CmdwinLeave ColorScheme ColorSchemePre CompleteChanged CompleteDone CompleteDonePre CursorHold CursorHoldI CursorMoved CursorMovedC CursorMovedI DiffUpdated DirChanged DirChangedPre EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern
|
|
syn keyword vimAutoEvent contained FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave InsertLeavePre KeyInputPre MenuPopup ModeChanged OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost SessionLoadPre SessionWritePost ShellCmdPost ShellFilterPost SigUSR1 SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabClosedPre TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TermResponseAll TextChanged TextChangedI TextChangedP TextChangedT TextPutPost TextPutPre TextYankPost VimEnter VimLeave VimLeavePre VimResized VimResume VimSuspend WinClosed WinEnter skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern
|
|
syn keyword vimAutoEvent contained WinLeave WinNew WinNewPre WinResized WinScrolled skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern
|
|
|
|
syn keyword vimAutoEvent contained User skipwhite nextgroup=vimUserAutoEvent
|
|
syn match vimUserAutoEvent contained "\<\h\w*\>" skipwhite skipnl nextgroup=vimUserAutoEventSep,vimAutocmdMod,vimAutocmdBlock,@vimAutocmdContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func,@vimFunc
|
|
|
|
" Highlight commonly used Groupnames {{{2
|
|
" GEN_SYN_VIM: vimGroup, START_STR='syn keyword vimGroup contained', END_STR=''
|
|
syn keyword vimGroup contained Added Bold BoldItalic Boolean Changed Character Comment Conditional Constant Debug Define Delimiter Error Exception Float Function Identifier Ignore Include Italic Keyword Label Macro Number Operator PreCondit PreProc Regexp Removed Repeat Special SpecialChar SpecialComment Statement StorageClass String Structure Tag Todo Type Typedef Underlined
|
|
|
|
" Default highlighting groups {{{2
|
|
" GEN_SYN_VIM: vimHLGroup, START_STR='syn keyword vimHLGroup contained', END_STR=''
|
|
syn keyword vimHLGroup contained ErrorMsg IncSearch ModeMsg NonText StatusLine StatusLineNC EndOfBuffer VertSplit VertSplitNC VisualNOS DiffText DiffTextAdd PmenuSbar TabLineSel TabLineFill TabPanel TabPanelSel TabPanelFill Cursor lCursor TitleBar TitleBarNC QuickFixLine CursorLineSign CursorLineFold CurSearch PmenuKind PmenuKindSel PmenuMatch PmenuMatchSel PmenuExtra PmenuExtraSel PmenuBorder PopupSelected Popup PopupBorder PopupTitle MessageWindow PopupNotification PreInsert Normal Directory LineNr CursorLineNr MoreMsg Question Search SpellBad SpellCap SpellRare SpellLocal PmenuThumb PmenuShadow Pmenu PmenuSel SpecialKey Title WarningMsg WildMenu Folded FoldColumn SignColumn Visual DiffAdd DiffChange DiffDelete TabLine CursorColumn CursorLine ColorColumn MatchParen
|
|
syn keyword vimHLGroup contained StatusLineTerm StatusLineTermNC ToolbarLine ToolbarButton TitleBar TitleBarNC Menu Tooltip Scrollbar CursorIM ComplMatchIns LineNrAbove LineNrBelow MsgArea Terminal User1 User2 User3 User4 User5 User6 User7 User8 User9
|
|
syn match vimHLGroup contained "\<Conceal\>"
|
|
syn case match
|
|
|
|
" Function Names {{{2
|
|
" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
|
|
syn keyword vimFuncName contained abs acos add and append appendbufline argc argidx arglistid argv asin assert_beeps assert_equal assert_equalfile assert_exception assert_fails assert_false assert_inrange assert_match assert_nobeep assert_notequal assert_notmatch assert_report assert_true atan atan2 autocmd_add autocmd_delete autocmd_get balloon_gettext balloon_show balloon_split base64_decode base64_encode bindtextdomain blob2list blob2str browse browsedir bufadd bufexists buflisted bufload bufloaded bufname bufnr bufwinid bufwinnr byte2line byteidx byteidxcomp call ceil ch_canread ch_close ch_close_in ch_evalexpr ch_evalraw ch_getbufnr ch_getjob ch_info ch_listen ch_log ch_logfile ch_open ch_read ch_readblob ch_readraw ch_sendexpr ch_sendraw ch_setoptions ch_status
|
|
syn keyword vimFuncName contained changenr char2nr charclass charcol charidx chdir cindent clearmatches cmdcomplete_info col complete complete_add complete_check complete_info confirm copy cos cosh count cscope_connection cursor debugbreak deepcopy delete deletebufline did_filetype diff diff_filler diff_hlID digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty environ err_teapot escape eval eventhandler executable execute exepath exists exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy filereadable filewritable filter finddir findfile flatten flattennew float2nr floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreach foreground fullcommand funcref function garbagecollect get getbgcolor
|
|
syn keyword vimFuncName contained getbufinfo getbufline getbufoneline getbufvar getcellpixels getcellwidths getchangelist getchar getcharmod getcharpos getcharsearch getcharstr getcmdcomplpat getcmdcompltype getcmdline getcmdpos getcmdprompt getcmdscreenpos getcmdtype getcmdwintype getcompletion getcompletiontype getcurpos getcursorcharpos getcwd getenv getfontname getfperm getfsize getftime getftype getimstatus getinfo getjumplist getline getloclist getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg getreginfo getregion getregionpos getregtype getscriptinfo getstacktrace gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key haslocaldir hasmapto
|
|
syn keyword vimFuncName contained histadd histdel histget histnr hlID hlexists hlget hlset hostname iconv id image_add image_discard image_info indent index indexof input inputdialog inputlist inputrestore inputsave inputsecret insert instanceof interrupt invert isabsolutepath isdirectory isinf islocked isnan items job_getchannel job_info job_setoptions job_start job_status job_stop join js_decode js_encode json_decode json_encode keys keytrans len libcall libcallnr line line2byte lispindent list2blob list2str list2tuple listener_add listener_flush listener_remove localtime log log10 luaeval map maparg mapcheck maplist mapnew mapset match matchadd matchaddpos matcharg matchbufline matchdelete matchend matchfuzzy matchfuzzypos matchlist matchstr matchstrlist matchstrpos
|
|
syn keyword vimFuncName contained max menu_info min mkdir mode mzeval nextnonblank ngettext nr2char or pathshorten perleval popup_atcursor popup_beval popup_clear popup_close popup_create popup_dialog popup_filter_menu popup_filter_yesno popup_findecho popup_findinfo popup_findpreview popup_getoptions popup_getpos popup_hide popup_list popup_locate popup_menu popup_move popup_notification popup_setbuf popup_setoptions popup_settext popup_show pow preinserted prevnonblank printf prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos pumvisible py3eval pyeval pyxeval rand range readblob readdir
|
|
syn keyword vimFuncName contained readdirex readfile redraw_listener_add redraw_listener_remove reduce reg_executing reg_recording reltime reltimefloat reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remote_startserver remove rename repeat resolve reverse round rubyeval screenattr screenchar screenchars screencol screenpos screenrow screenstring search searchcount searchdecl searchpair searchpairpos searchpos server2client serverlist setbufline setbufvar setcellwidths setcharpos setcharsearch setcmdline setcmdpos setcursorcharpos setenv setfperm setline setloclist setmatches setpos setqflist setreg settabvar settabwinvar settagstack setwinvar sha256 shellescape shiftwidth sign_define sign_getdefined sign_getplaced sign_jump sign_place
|
|
syn keyword vimFuncName contained sign_placelist sign_undefine sign_unplace sign_unplacelist simplify sin sinh slice sort sound_clear sound_playevent sound_playfile sound_stop soundfold spellbadword spellsuggest split sqrt srand state str2blob str2float str2list str2nr strcharlen strcharpart strchars strdisplaywidth strftime strgetchar stridx string strlen strpart strptime strridx strtrans strutf16len strwidth submatch substitute swapfilelist swapinfo swapname synID synIDattr synIDtrans synconcealed synstack system systemlist tabpagebuflist tabpagenr tabpagewinnr tabpanel_getinfo tabpanel_scroll tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors term_getattr term_getcursor term_getjob term_getline
|
|
syn keyword vimFuncName contained term_getscrolled term_getsize term_getstatus term_gettitle term_gettty term_list term_scrape term_sendkeys term_setansicolors term_setapi term_setkill term_setrestore term_setsize term_start term_wait terminalprops test_alloc_fail test_autochdir test_feedinput test_garbagecollect_now test_garbagecollect_soon test_getvalue test_gui_event test_ignore_error test_mswin_event test_null_blob test_null_channel test_null_dict test_null_function test_null_job test_null_list test_null_partial test_null_string test_null_tuple test_option_not_set test_override test_refcount test_setmouse test_settime test_srand_seed test_unknown test_void timer_info timer_pause timer_start timer_stop timer_stopall tolower toupper tr trim trunc tuple2list
|
|
syn keyword vimFuncName contained type typename undofile undotree uniq uri_decode uri_encode utf16idx values virtcol virtcol2col visualmode wildmenumode wildtrigger win_execute win_findbuf win_getid win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion winheight winlayout winline winnr winrestcmd winrestview winsaveview winwidth wordcount writefile xor
|
|
|
|
" Predefined variable names {{{2
|
|
" GEN_SYN_VIM: vimVarName, START_STR='syn keyword vimVimVarName contained', END_STR=''
|
|
syn keyword vimVimVarName contained count count1 prevcount errmsg warningmsg statusmsg shell_error this_session version lnum termresponse fname lang lc_time ctype charconvert_from charconvert_to fname_in fname_out fname_new fname_diff cmdarg foldstart foldend folddashes foldlevel progname servername dying exception throwpoint register cmdbang insertmode val key profiling fcs_reason fcs_choice beval_bufnr beval_winnr beval_winid beval_lnum beval_col beval_text scrollstart swapname swapchoice swapcommand char mouse_win mouse_winid mouse_lnum mouse_col operator searchforward hlsearch oldfiles windowid progpath completed_item option_new option_old option_oldlocal option_oldglobal option_command option_type errors false true none null numbermax numbermin numbersize
|
|
syn keyword vimVimVarName contained vim_did_enter testing t_number t_string t_func t_list t_dict t_float t_bool t_none t_job t_channel t_blob t_class t_object termrfgresp termrbgresp termu7resp termstyleresp termblinkresp event versionlong echospace argv collate exiting colornames sizeofint sizeoflong sizeofpointer maxcol python3_version t_typealias t_enum t_enumvalue stacktrace t_tuple wayland_display clipmethod termda1 termosc vim_did_init clipproviders imagebackend
|
|
|
|
"--- syntax here and above generated by runtime/syntax/generator/gen_syntax_vim.vim ---
|
|
|
|
" Special Vim Highlighting (not automatic) {{{1
|
|
|
|
" Neovim keyword list additions {{{2
|
|
|
|
if s:has("nvim")
|
|
syn keyword vimOptionVarName contained channel inccommand mousescroll pumblend redrawdebug scrollback shada shadafile statuscolumn termpastefilter termsync winbar winblend winhighlight
|
|
syn keyword vimFuncName contained api_info buffer_exists buffer_name buffer_number chanclose chansend ctxget ctxpop ctxpush ctxset ctxsize dictwatcheradd dictwatcherdel file_readable highlight_exists highlightID jobclose jobpid jobresize jobsend jobstart jobstop jobwait last_buffer_nr menu_get msgpackdump msgpackparse reg_recorded rpcnotify rpcrequest rpcstart rpcstop serverstart serverstop sockconnect stdioopen stdpath termopen test_write_list_log wait
|
|
syn match vimFuncName contained "\<nvim_\w\+\>"
|
|
syn keyword vimVimVarName contained lua msgpack_types relnum stderr termrequest virtnum
|
|
endif
|
|
|
|
" Set up commands for this syntax highlighting file {{{2
|
|
|
|
com! -nargs=* Vim9 execute <q-args> s:vim9script ? "" : "contained"
|
|
com! -nargs=* VimL execute <q-args> s:vim9script ? "contained" : ""
|
|
|
|
com! -nargs=* VimExtend execute <q-args> s:cmdline_window ? "" : "extend"
|
|
|
|
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[acefhiHlmpPrt]'
|
|
if g:vimsyn_folding =~# 'a'
|
|
com! -nargs=* VimFolda <args> fold
|
|
else
|
|
com! -nargs=* VimFolda <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'c'
|
|
com! -nargs=* VimFoldc <args> fold
|
|
else
|
|
com! -nargs=* VimFoldc <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'e'
|
|
com! -nargs=* VimFolde <args> fold
|
|
else
|
|
com! -nargs=* VimFolde <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'f'
|
|
com! -nargs=* VimFoldf <args> fold
|
|
else
|
|
com! -nargs=* VimFoldf <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'h'
|
|
com! -nargs=* VimFoldh <args> fold
|
|
else
|
|
com! -nargs=* VimFoldh <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'H'
|
|
com! -nargs=* VimFoldH <args> fold
|
|
else
|
|
com! -nargs=* VimFoldH <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'i'
|
|
com! -nargs=* VimFoldi <args> fold
|
|
else
|
|
com! -nargs=* VimFoldi <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'l'
|
|
com! -nargs=* VimFoldl <args> fold
|
|
else
|
|
com! -nargs=* VimFoldl <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'm'
|
|
com! -nargs=* VimFoldm <args> fold
|
|
else
|
|
com! -nargs=* VimFoldm <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'p'
|
|
com! -nargs=* VimFoldp <args> fold
|
|
else
|
|
com! -nargs=* VimFoldp <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'P'
|
|
com! -nargs=* VimFoldP <args> fold
|
|
else
|
|
com! -nargs=* VimFoldP <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 'r'
|
|
com! -nargs=* VimFoldr <args> fold
|
|
else
|
|
com! -nargs=* VimFoldr <args>
|
|
endif
|
|
if g:vimsyn_folding =~# 't'
|
|
com! -nargs=* VimFoldt <args> fold
|
|
else
|
|
com! -nargs=* VimFoldt <args>
|
|
endif
|
|
else
|
|
com! -nargs=* VimFolda <args>
|
|
com! -nargs=* VimFoldc <args>
|
|
com! -nargs=* VimFolde <args>
|
|
com! -nargs=* VimFoldf <args>
|
|
com! -nargs=* VimFoldi <args>
|
|
com! -nargs=* VimFoldh <args>
|
|
com! -nargs=* VimFoldH <args>
|
|
com! -nargs=* VimFoldl <args>
|
|
com! -nargs=* VimFoldm <args>
|
|
com! -nargs=* VimFoldp <args>
|
|
com! -nargs=* VimFoldP <args>
|
|
com! -nargs=* VimFoldr <args>
|
|
com! -nargs=* VimFoldt <args>
|
|
endif
|
|
|
|
" Deprecated variable options {{{2
|
|
if exists("g:vim_minlines")
|
|
let g:vimsyn_minlines= g:vim_minlines
|
|
endif
|
|
if exists("g:vim_maxlines")
|
|
let g:vimsyn_maxlines= g:vim_maxlines
|
|
endif
|
|
if exists("g:vimsyntax_noerror")
|
|
let g:vimsyn_noerror= g:vimsyntax_noerror
|
|
endif
|
|
|
|
" Nulls {{{2
|
|
" =====
|
|
Vim9 syn keyword vim9Null null null_blob null_channel null_class null_dict null_function null_job null_list null_object null_partial null_string null_tuple
|
|
|
|
" Booleans {{{2
|
|
" ========
|
|
Vim9 syn keyword vim9Boolean true false
|
|
|
|
" Numbers {{{2
|
|
" =======
|
|
syn case ignore
|
|
syn match vimNumber "\<\d\+\%('\d\+\)*" skipwhite nextgroup=@vimComment,vimSubscriptBrackets
|
|
syn match vimNumber "\<\d\+\%('\d\+\)*\.\d\+\%(e[+-]\=\d\+\)\=" skipwhite nextgroup=@vimComment
|
|
syn match vimNumber "\<0b[01]\+\%('[01]\+\)*" skipwhite nextgroup=@vimComment,vimSubscriptBrackets
|
|
syn match vimNumber "\<0o\=\o\+\%('\o\+\)*" skipwhite nextgroup=@vimComment,vimSubscriptBrackets
|
|
syn match vimNumber "\<0x\x\+\%('\x\+\)*" skipwhite nextgroup=@vimComment,vimSubscriptBrackets
|
|
syn match vimNumber '\<0z\>' skipwhite nextgroup=@vimComment
|
|
syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=@vimComment,vimSubscriptBrackets
|
|
syn case match
|
|
|
|
" Variables {{{2
|
|
" =========
|
|
syn region vimSubscriptBrackets contained
|
|
\ matchgroup=vimSubscriptBracket
|
|
\ start="\["
|
|
\ end="]"
|
|
\ nextgroup=vimSubscriptBrackets,vimSubscriptDot
|
|
\ contains=@vimExprList
|
|
syn match vimSubscriptDot contained "\." nextgroup=vimVar,vimVarKey,vimUserFunc,vimUserFuncKey
|
|
|
|
syn match vimVar contained "\<\h\w*\>" nextgroup=vimSubscriptBrackets,vimSubscriptDot contains=vim9Super,vim9This
|
|
" dict-key only
|
|
syn match vimVarKey contained "\<\d\w*\>" nextgroup=vimSubscriptBrackets,vimSubscriptDot
|
|
syn match vimVar "\<[bwglstav]:\h\w*\>" nextgroup=vimSubscriptBrackets,vimSubscriptDot contains=vimVarScope
|
|
" autoload prefix
|
|
syn match vimVar
|
|
\ "\<\%(g:\)\=\h\w*\%(#\w\+\)\+\>" nextgroup=vimSubscriptBrackets,vimSubscriptDot contains=vimVarScope
|
|
syn match vimVar "\<a:\%(000\|1\=[0-9]\|20\)\>" nextgroup=vimSubscriptBrackets,vimSubscriptDot contains=vimVarScope
|
|
syn match vimFBVar contained "\<[bwglsta]:\h\w*\>" nextgroup=vimSubscriptBrackets,vimSubscriptDot contains=vimVarScope
|
|
" autoload prefix
|
|
syn match vimFBVar contained
|
|
\ "\<\%(g:\)\=\h\w*\%(#\w\+\)\+\>" nextgroup=vimSubscriptBrackets,vimSubscriptDot contains=vimVarScope
|
|
|
|
" match the scope prefix independently of the retrofitted scope dictionary
|
|
syn match vimVarScope contained "\<[bwglstav]:"
|
|
syn match vimVimVar contained "\<[bwglstav]:\%(\h\|\d\)\@!" nextgroup=vimSubscriptBrackets,vimSubscriptDot
|
|
|
|
syn match vimVarNameError contained "\<\h\w*\>" nextgroup=vimSubscriptBrackets,vimSubscriptDot " TODO: just abort highlighting rather than match nextgroup?
|
|
syn match vimVimVar "\<v:" nextgroup=vimSubscriptBrackets,vimSubscriptDot,vimVimVarName,vimVarNameError
|
|
syn match vimOptionVar "&\%([lg]:\)\=" nextgroup=vimSubscriptBrackets,vimSubscriptDot,vimOptionVarName,vimVarNameError
|
|
syn cluster vimSpecialVar contains=vimEnvvar,vimLetRegister,vimOptionVar,vimVimVar
|
|
|
|
Vim9 syn match vimVar contained "\<\h\w*\ze<" nextgroup=vim9TypeArgs
|
|
|
|
syn cluster vimExprList contains=@vimSpecialVar,@vimFunc,vimNumber,vimOper,vimOperParen,vimLambda,vimString,vimVar,@vim9ExprList
|
|
syn cluster vim9ExprList contains=vim9Boolean,vim9LambdaParams,vim9Null
|
|
|
|
" Commands {{{2
|
|
syn cluster vimCmdList contains=@vim9CmdList,@vimExUserCmdList,vimAbb,vimAt,vimAugroup,vimAutocmd,vimBehave,vimBreakadd,vimBreakdel,vimBreaklist,vimBuffer,vimCall,vimCatch,vimCd,vimCommand,vimCommandModifier,vimConst,vimCopy,vimDebug,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelete,vimDelfunction,vimDoCommand,vimDoautocmd,vimTextInputFold,@vimEcho,vimElse,vimElseif,vimEnddef,vimEndfunction,vimEndif,vimEquals,vimEval,vimExFilter,vimExecute,vimExtCmd,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGlobal,vimGrep,vimGrepadd,vimHelp,vimHelpgrep,vimHighlight,vimHistory,vimIf,vimImport,vimLanguage,vimLet,vimLoadkeymap,vimLockvar,vimLua,vimMake,vimMap,vimMark,vimMatch,vimMenu,vimMenutranslate,vimMzScheme,vimNormal,vimPackadd,vimPerl,vimPound,vimProfdel,vimProfile,vimPrompt,vimPython,vimPython3,vimPythonX,vimRedir,vimReturn,vimRuby,vimRuntime,vimSet,vimShiftLeft,vimShiftRight,vimSleep,vimSort,vimSubst,vimSynColor,vimSynLink,vimSyntax,vimSyntime,vimTcl,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimUsrCmd,vimVimgrep,vimVimgrepadd,vimWhile,vimWincmd,vimWrite
|
|
syn cluster vim9CmdList contains=vim9Abstract,vim9ClassBody,vim9Const,vim9EnumBody,vim9Export,vim9Final,vim9For,vim9InterfaceBody,vim9Type,vim9Var,vim9Wincmd
|
|
|
|
syn match vimCmdStart contained ":\+" skipwhite nextgroup=vimCmdStart,@vimRange,@vimCmdList,vimComment
|
|
syn match vimCount contained "\d\+"
|
|
syn match vimBang contained "!"
|
|
syn match vimPrintFlag contained "[lp#]" skipwhite nextgroup=vimPrintFlag,vimComment,vimCmdSep
|
|
|
|
syn match vimWhitespace contained "\s\+"
|
|
syn match vimLeadingWhitespace contained "^\s\+"
|
|
|
|
" :range {{{3
|
|
syn match vimRange contained "[*%]" skipwhite nextgroup=vimAddressOffset,vimAddressSeparator,vimCmdStart,@vimCmdList,vimCommand
|
|
|
|
syn region vimAddressPattern contained
|
|
\ matchgroup=Delimiter
|
|
\ start="/"
|
|
\ skip=+\\/\|\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ end="/"
|
|
\ skipwhite nextgroup=vimAddressOffset,vimAddressSeparator,vimCmdStart,@vimCmdList,vimCommand
|
|
\ contains=vimAddressSlashEscape,@vimContinue,@vimSubstList
|
|
syn match vimAddressSlashEscape contained "\\/"
|
|
syn region vimAddressPattern contained
|
|
\ matchgroup=Delimiter
|
|
\ start="?"
|
|
\ skip=+\\?\|\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ end="?"
|
|
\ skipwhite nextgroup=vimAddressOffset,vimAddressSeparator,vimCmdStart,@vimCmdList,vimCommand
|
|
\ contains=vimAddressQuestionEscape,@vimContinue,@vimSubstList
|
|
syn match vimAddressQuestionEscape contained "\\?"
|
|
|
|
syn match vimAddressOffset contained "[+-]\%(\d\+\)\=\|\d\+" skipwhite nextgroup=vimAddressOffset,vimAddressSeparator,vimCmdStart,@vimCmdList,@vimCommand_
|
|
syn match vimAddress contained "\%#=1\d\+" skipwhite nextgroup=vimAddressOffset,vimAddressSeparator,vimCmdStart,@vimCmdList,@vimCommand_
|
|
syn match vimAddress contained "\%#=1[.$]" skipwhite nextgroup=vimAddressOffset,vimAddressSeparator,vimCmdStart,@vimCmdList,vimCommand
|
|
syn match vimAddress contained "\%#=1'[[\]<>'`"^.(){}]" skipwhite nextgroup=vimAddressOffset,vimAddressSeparator,vimCmdStart,@vimCmdList,vimCommand
|
|
syn match vimAddress contained "\%#=1'[a-zA-Z0-9]" skipwhite nextgroup=vimAddressOffset,vimAddressSeparator,vimCmdStart,@vimCmdList,@vimCommand_
|
|
" NOTE: needs leading ':' to distinguish \/ from line continuation in Vim script
|
|
syn match vimAddress contained "\%#=1\\[/?&]" skipwhite nextgroup=vimAddressOffset,vimAddressSeparator,vimCmdStart,@vimCmdList,vimCommand
|
|
|
|
syn match vimAddressSeparator contained "\%#=1[,;]" skipwhite nextgroup=vimAddress,vimAddressPattern,vimAddressOffset,vimCmdStart,@vimCmdList,vimCommand,vimAddressSeparator
|
|
|
|
syn cluster vimRange contains=vimRange,vimAddress,vimAddressPattern,vimAddressOffset,vimAddressSeparator
|
|
|
|
" :@ {{{3
|
|
" ==
|
|
" syn match vimAtArg contained +[0-9a-z".=*+:@]+ skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
" syn match vimAt contained "@" nextgroup=vimAtArg,vimComment,vim9Comment,vimCmdSep
|
|
|
|
" NOTE: :* as an alias for :@ is not supported, this is considered a :range,
|
|
" see :help cpo-star
|
|
syn match vimAtArg contained +@\@1<=[0-9a-z".=*+:@]+
|
|
syn match vimAt contained +@[0-9a-z".=*+:@]\ze\s*\%($\|[|"#]\)+ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment contains=vimAtArg
|
|
" Vim9: avoid LHS assignment mismatching of :@["#]
|
|
syn match vimAt contained +@\ze\s*\%($\||\|\s["#]\)+ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
|
|
|
" :number, :# {{{3
|
|
" ===========
|
|
" TODO: needs to be limited to after a ':' in Vim9, otherwise a comment
|
|
if s:vim9script
|
|
syn match vimPound contained ":\@1<=#" skipwhite nextgroup=vimPoundCount,vimPrintFlag
|
|
else
|
|
syn match vimPound contained "#" skipwhite nextgroup=vimPoundCount,vimPrintFlag
|
|
endif
|
|
syn keyword vimPound contained nu[mber] skipwhite nextgroup=vimPoundCount,vimPrintFlag
|
|
syn match vimPound_ contained "nu\%[mber]\>" skipwhite nextgroup=vimPoundCount,vimPrintFlag
|
|
syn match vimPoundCount contained "\d\+" skipwhite nextgroup=vimPrintFlag
|
|
|
|
" := {{{3
|
|
" ==
|
|
syn match vimEquals contained "=" skipwhite nextgroup=vimPrintFlag
|
|
|
|
" :>, :< {{{3
|
|
" ======
|
|
|
|
syn match vimShiftLeft contained "<\%(line\)\@!" skipwhite nextgroup=vimShiftLeftPlus,vimShiftLeftCount,vimPrintFlag
|
|
syn match vimShiftLeftPlus contained "<" skipwhite nextgroup=vimShiftLeftPlus,vimShiftLeftCount,vimPrintFlag
|
|
syn match vimShiftLeftCount contained "\d\+" skipwhite nextgroup=vimPrintFlag
|
|
|
|
syn match vimShiftRight contained ">" skipwhite nextgroup=vimShiftRightPlus,vimShiftRightCount,vimPrintFlag
|
|
syn match vimShiftRightPlus contained ">" skipwhite nextgroup=vimShiftRightPlus,vimShiftRightCount,vimPrintFlag
|
|
syn match vimShiftRightCount contained "\d\+" skipwhite nextgroup=vimPrintFlag
|
|
|
|
" :abbreviate {{{3
|
|
" ===========
|
|
" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb contained', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
|
|
syn keyword vimAbb contained ab[breviate] ca[bbrev] cnorea[bbrev] cuna[bbrev] ia[bbrev] inorea[bbrev] iuna[bbrev] norea[bbrev] una[bbreviate] skipwhite nextgroup=vimMapMod,vimMapLhs
|
|
" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb contained', END_STR='skipwhite nextgroup=vimMapMod'
|
|
syn keyword vimAbb contained abc[lear] cabc[lear] iabc[lear] skipwhite nextgroup=vimMapMod
|
|
|
|
" :append, :change, :insert {{{3
|
|
" =========================
|
|
|
|
syn match vimCommand contained "\<a\%[ppend]\>" skipwhite skipnl skipempty nextgroup=vimTextInputBang,@vimTextInputText,vimTextInputComment,vimTextInputBar
|
|
syn match vimCommand_ contained "a\%[ppend]\>" skipwhite skipnl skipempty nextgroup=vimTextInputBang,@vimTextInputText,vimTextInputComment,vimTextInputBar
|
|
syn match vimCommand contained "\<c\%[hange]\>" skipwhite skipnl skipempty nextgroup=vimChangeBang,vimChangeCount,@vimTextInputText,vimTextInputComment,vimTextInputBar
|
|
syn match vimCommand_ contained "c\%[hange]\>" skipwhite skipnl skipempty nextgroup=vimChangeBang,vimChangeCount,@vimTextInputText,vimTextInputComment,vimTextInputBar
|
|
syn match vimCommand contained "\<i\%[nsert]\>" skipwhite skipnl skipempty nextgroup=vimTextInputBang,@vimTextInputText,vimTextInputComment,vimTextInputBar
|
|
syn match vimCommand_ contained "i\%[nsert]\>" skipwhite skipnl skipempty nextgroup=vimTextInputBang,@vimTextInputText,vimTextInputComment,vimTextInputBar
|
|
|
|
syn match vimChangeCount contained "\d\+" skipwhite skipnl skipempty nextgroup=@vimTextInputText,vimTextInputComment,vimTextInputBar
|
|
syn match vimChangeBang contained
|
|
\ "\a\@1<=!"
|
|
\ skipwhite skipnl skipempty nextgroup=vimChangeCount,@vimTextInputText,vimTextInputComment,vimTextInputBar
|
|
|
|
syn match vimTextInputBang contained "\a\@1<=!" skipwhite skipnl skipempty nextgroup=@vimTextInputText,vimTextInputComment,vimTextInputBar
|
|
syn match vimTextInputText contained "|\@1<=.*" skipnl skipempty nextgroup=@vimTextInputText
|
|
VimExtend syn region vimTextInputText contained
|
|
\ start="^."
|
|
\ matchgroup=vimCommand
|
|
\ end="^\.$"
|
|
" NOTE: 'autoindent' end marker not supported
|
|
syn match vimTextInputEnd contained "^\.$"
|
|
syn cluster vimTextInputText contains=vimTextInputText,vimTextInputEnd
|
|
|
|
syn match vimTextInputComment contained
|
|
\ /".*/
|
|
\ skipnl skipempty nextgroup=@vimTextInputText
|
|
syn match vimTextInputBar contained
|
|
\ "\s*\zs|"
|
|
\ nextgroup=@vimTextInputText
|
|
|
|
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'T'
|
|
" excludes "extend" option, handled by wrapper
|
|
syn region vimTextInputText contained
|
|
\ start="^."
|
|
\ matchgroup=vimCommand
|
|
\ end="^\.$"
|
|
VimExtend syn region vimTextInputFold contained
|
|
\ start="\<a\%[ppend]\>"
|
|
\ start="\<c\%[hange]\>"
|
|
\ start="\<i\%[nsert]\>"
|
|
\ end="^\.$"
|
|
\ contains=vimCommand
|
|
\ fold keepend transparent
|
|
syn region vimTextInputFold_ contained
|
|
\ start="a\%[ppend]\>"
|
|
\ start="c\%[hange]\>"
|
|
\ start="i\%[nsert]\>"
|
|
\ end="^\.$"
|
|
\ contains=vimCommand_
|
|
\ fold keepend transparent
|
|
endif
|
|
|
|
" :argdo, :bufdo, :tabdo, :windo, :cdo, :cfdo, :ldo, :lfdo, :folddoopen, :folddoclosed {{{3
|
|
" =====================================================================================
|
|
syn match vimDoCommandBang contained "\a\@1<=!" skipwhite nextgroup=@vimCmdList
|
|
|
|
syn keyword vimDoCommand contained argdo skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
syn match vimDoCommand_ contained "argdo\>" skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
syn keyword vimDoCommand contained bufdo skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
syn match vimDoCommand_ contained "bufdo\>" skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
syn keyword vimDoCommand contained tabd[o] skipwhite nextgroup=@vimCmdList
|
|
syn match vimDoCommand_ contained "tabdo\=\>" skipwhite nextgroup=@vimCmdList
|
|
syn keyword vimDoCommand contained windo skipwhite nextgroup=@vimCmdList
|
|
syn match vimDoCommand_ contained "windo\>" skipwhite nextgroup=@vimCmdList
|
|
|
|
syn keyword vimDoCommand contained cdo skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
syn match vimDoCommand_ contained "cdo\>" skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
syn keyword vimDoCommand contained cfd[o] skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
syn match vimDoCommand_ contained "cfdo\=\>" skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
|
|
syn keyword vimDoCommand contained ldo skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
syn match vimDoCommand_ contained "ldo\>" skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
syn keyword vimDoCommand contained lfd[o] skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
syn match vimDoCommand_ contained "lfdo\=\>" skipwhite nextgroup=vimDoCommandBang,@vimCmdList
|
|
|
|
syn keyword vimDoCommand contained foldd[oopen] skipwhite nextgroup=@vimCmdList
|
|
syn match vimDoCommand_ contained "foldd\%[oopen]\>" skipwhite nextgroup=@vimCmdList
|
|
syn keyword vimDoCommand contained folddoc[losed] skipwhite nextgroup=@vimCmdList
|
|
syn match vimDoCommand_ contained "folddoc\%[losed]\>" skipwhite nextgroup=@vimCmdList
|
|
|
|
" :augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{3
|
|
" ======== : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
|
|
syn cluster vimAugroupList contains=@vimFunc,vimLineStart,vimContinue,vimCmdSep,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,@vimComment,vimString,vimNotation,vimCtrlChar
|
|
|
|
" define
|
|
VimFolda syn region vimAugroup contained
|
|
\ start="\<aug\%[roup]\>\ze\s\+\%([eE][nN][dD]\%($\|[[:space:]|"#]\)\)\@!\S"
|
|
\ matchgroup=vimAugroupKey
|
|
\ end="\<aug\%[roup]\ze\s\+[eE][nN][dD]\s*\%($\|[|"#]\)"
|
|
\ skipwhite nextgroup=vimAugroupEnd
|
|
\ contains=vimAutocmd,@vimAugroupList,vimAugroupKey
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
|
|
syn match vimAugroupError "\<aug\%[roup]\s\+[eE][nN][dD]\ze\s*\%($\|[|"#]\)"
|
|
endif
|
|
|
|
" TODO: Vim9 comment
|
|
syn match vimAugroupName contained "\%(\\["|[:space:]]\|[^"|[:space:]]\)\+"
|
|
\ skipwhite nextgroup=vimCmdSep,vimComment
|
|
syn match vimAugroupEnd contained "\c\<END\>" skipwhite nextgroup=vimCmdSep,vimComment
|
|
syn match vimAugroupBang contained "\a\@1<=!" skipwhite nextgroup=vimAugroupName
|
|
syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBang,vimAugroupName,vimAugroupEnd
|
|
|
|
" remove
|
|
syn match vimAugroup contained "\<aug\%[roup]!" skipwhite nextgroup=vimAugroupName contains=vimAugroupKey,vimAugroupBang
|
|
|
|
" list
|
|
VimL syn match vimAugroup contained "\<aug\%[roup]\>\ze\s*\%(["|]\|$\)" skipwhite nextgroup=vimCmdSep,vimComment contains=vimAugroupKey
|
|
Vim9 syn match vimAugroup contained "\<aug\%[roup]\>\ze\s*\%([#|]\|$\)" skipwhite nextgroup=vimCmdSep,vim9Comment contains=vimAugroupKey
|
|
|
|
" :autocmd, :doautocmd, :doautoall {{{3
|
|
" ================================
|
|
|
|
" TODO: explicitly match the {cmd} arg rather than bailing out to TOP
|
|
syn region vimAutocmdBlock contained
|
|
\ matchgroup=vimSep
|
|
\ start="{\ze\s*\%($\|[#|]\)"
|
|
\ end="^\s*\zs}"
|
|
\ end="\%(\\\@<!|\s*\)\=\zs}"
|
|
\ contains=@vimDefBodyList
|
|
|
|
syn match vimAutocmdGroup contained "\%(\\["|[:space:]]\|[^"|[:space:]]\)\+" skipwhite nextgroup=vimAutoEvent,vimAutoEventGlob
|
|
syn match vimAutocmdBang contained "\a\@1<=!" skipwhite nextgroup=vimAutocmdGroup,vimAutoEvent,vimAutoEventGlob
|
|
|
|
" TODO: cleaner handling of | in pattern position
|
|
" : match pattern items in addition to wildcards
|
|
syn region vimAutocmdPattern contained
|
|
\ start="|\@!\S"
|
|
\ skip="\\\\\|\\[,[:space:]]"
|
|
\ end="\ze[,[:space:]]"
|
|
\ end="$"
|
|
\ skipwhite skipnl nextgroup=vimAutocmdPatternSep,vimAutocmdMod,vimAutocmdBlock,@vimAutocmdContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func,@vimFunc
|
|
\ contains=vimEnvvar,@vimWildcard,vimAutocmdPatternEscape
|
|
syn match vimAutocmdBufferPattern contained "<buffer\%(=\%(\d\+\|abuf\)\)\=>" skipwhite skipnl nextgroup=vimAutocmdPatternSep,vimAutocmdMod,vimAutocmdBlock,@vimAutocmdContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func,@vimFunc
|
|
syn match vimAutocmdPatternSep contained "," skipwhite skipnl nextgroup=@vimAutocmdPattern,@vimAutocmdContinue
|
|
" trailing pattern separator comma allowed
|
|
syn match vimAutocmdPatternSep contained ",\ze\s\+" skipwhite skipnl nextgroup=vimAutocmdMod,vimAutocmdBlock,@vimAutocmdContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func,@vimFunc
|
|
syn match vimAutocmdPatternEscape contained "\\."
|
|
syn cluster vimAutocmdPattern contains=vimAutocmdPattern,vimAutocmdBufferPattern
|
|
|
|
" TODO: Vim9 requires '++' prefix
|
|
syn match vimAutocmdMod contained "\%(++\)\=\<nested\>" skipwhite skipnl nextgroup=vimAutocmdMod,vimAutocmdBlock,@vimAutocmdContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func,@vimFunc
|
|
syn match vimAutocmdMod contained "++once\>" skipwhite skipnl nextgroup=vimAutocmdMod,vimAutocmdBlock,@vimAutocmdContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func,@vimFunc
|
|
|
|
" higher priority than vimAutocmdGroup, assume no group is so named
|
|
syn match vimAutoEventGlob contained "*" skipwhite nextgroup=@vimAutocmdPattern
|
|
syn match vimAutoEventSep contained "\a\@1<=," nextgroup=vimAutoEvent
|
|
syn match vimUserAutoEventSep contained "\a\@1<=," nextgroup=vimUserAutoEvent
|
|
|
|
syn keyword vimAutocmd contained au[tocmd] skipwhite nextgroup=vimAutocmdBang,vimAutocmdGroup,vimAutoEvent,vimAutoEventGlob
|
|
|
|
syn match vimAutocmdContinue contained "^\s*\\" skipwhite skipnl nextgroup=@vimAutocmdContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func,@vimFunc contains=vimLeadingWhitespace
|
|
syn match vimAutocmdContinueComment contained '^\s*["#]\\ .*' skipwhite skipnl nextgroup=@vimAutocmdContinue contains=vimLeadingWhitespace
|
|
syn cluster vimAutocmdContinue contains=vimAutocmdContinue,vimAutocmdContinueComment
|
|
|
|
syn match vimDoautocmdMod contained "<nomodeline>" skipwhite nextgroup=vimAutocmdGroup,vimAutoEvent
|
|
syn keyword vimDoautocmd contained do[autocmd] skipwhite nextgroup=vimDoautocmdMod,vimAutocmdGroup,vimAutoEvent
|
|
syn keyword vimDoautocmd contained doautoa[ll] skipwhite nextgroup=vimDoautocmdMod,vimAutocmdGroup,vimAutoEvent
|
|
|
|
" :behave {{{3
|
|
" =======
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
|
|
syn match vimBehaveError contained "[^ ]\+"
|
|
endif
|
|
syn keyword vimBehave contained be[have] nextgroup=vimBehaveBang,vimBehaveModel,vimBehaveError skipwhite
|
|
syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
|
|
syn keyword vimBehaveModel contained mswin xterm
|
|
|
|
" :breakadd, :breakdel, :breaklist {{{3
|
|
" ================================
|
|
syn keyword vimBreakaddFunc contained func skipwhite nextgroup=vimBreakpointFunctionLine,vimBreakpointFunction
|
|
syn keyword vimBreakaddFile contained file skipwhite nextgroup=vimBreakpointFileLine,vimBreakpointFilename
|
|
syn keyword vimBreakaddHere contained here skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
syn keyword vimBreakaddExpr contained expr skipwhite nextgroup=@vimExprList
|
|
|
|
syn match vimBreakpointGlob contained "*" skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
syn match vimBreakpointNumber contained "\<\d\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
|
|
syn cluster vimBreakpointArg contains=vimBreakaddFunc,vimBreakaddFile,vimBreakaddHere,vimBreakaddExpr
|
|
|
|
syn match vimBreakpointFunction contained "\<\%(\*\|\w\)\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
syn match vimBreakpointFilename contained "\<\%(\*\|\f\)\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
syn match vimBreakpointFunctionLine contained "\<\d\+\>" skipwhite nextgroup=vimBreakpointFunction
|
|
syn match vimBreakpointFileLine contained "\<\d\+\>" skipwhite nextgroup=vimBreakpointFilename
|
|
|
|
syn keyword vimBreakadd contained breaka[dd] skipwhite nextgroup=@vimBreakpointArg
|
|
syn keyword vimBreakdel contained breakd[el] skipwhite nextgroup=@vimBreakpointArg,vimBreakpointNumber,vimBreakpointGlob
|
|
syn keyword vimBreaklist contained breakl[ist] skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
|
|
" :buffer {{{3
|
|
" =======
|
|
" lower priority than [wtb]: Vim9 scoped variables at SOL
|
|
syn match vimBuffer contained "\<b\%[uffer]\>" nextgroup=vimBang
|
|
syn match vimBuffer_ contained "b\%[uffer]\>" nextgroup=vimBang
|
|
|
|
" :call {{{3
|
|
" =====
|
|
syn keyword vimCall contained cal[l] skipwhite nextgroup=vimVar,@vimFunc
|
|
syn match vimCall_ contained "call\=\>" skipwhite nextgroup=vimVar,@vimFunc
|
|
|
|
" :cd {{{3
|
|
" ===
|
|
" GEN_SYN_VIM: vimCommand cd, START_STR='syn keyword vimCd contained', END_STR='skipwhite nextgroup=vimCdBang,vimCdArg,vimComment,vim9Comment,vimCmdSep'
|
|
syn keyword vimCd contained cd lc[d] lch[dir] tc[d] tch[dir] skipwhite nextgroup=vimCdBang,vimCdArg,vimComment,vim9Comment,vimCmdSep
|
|
syn match vimCd contained "\<chd\%[ir]\>" skipwhite nextgroup=vimCdBang,vimCdArg,vimComment,vim9Comment,vimCmdSep
|
|
syn region vimCdArg contained
|
|
\ start=+["#|]\@!\S+
|
|
\ end="\ze\s*$"
|
|
\ end=+\ze\s*\\\@1<!["#|]+
|
|
\ skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
\ contains=vimSpecFile,@vimWildcard
|
|
\ oneline
|
|
|
|
syn match vimCdBang contained "\a\@1<=!" skipwhite nextgroup=vimCdArg,vimComment,vim9Comment,vimCmdSep
|
|
|
|
" :command {{{3
|
|
" ========
|
|
syn cluster vimUserCmdList contains=@vimCmdList,vimComment,vimCtrlChar,vimEscapeBrace,@vimFunc,vimNotation,vimNumber,vimOper,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,@vim9Lhs,vimCmdSep
|
|
|
|
syn match vimUserCmd contained "\<com\%[mand]\>!\=" skipwhite nextgroup=vimUserCmdAttrs,vimUserCmdName contains=vimBang
|
|
syn match vimUserCmd contained +\<com\%[mand]\>!\=\ze\s*\n\s*\%(\\\|["#]\\ \)+ skipwhite skipnl nextgroup=vimUserCmdAttrs,vimUserCmdName contains=vimBang
|
|
|
|
syn region vimUserCmdAttrs contained
|
|
\ start="-\l"
|
|
\ start=+^\s*\%(\\\|["#]\\ \)+
|
|
\ end="\ze\s\u"
|
|
\ skipwhite nextgroup=vimUserCmdName
|
|
\ contains=@vimContinue,vimUserCmdAttr,vimUserCmdAttrError
|
|
\ transparent
|
|
syn match vimUserCmdAttrError contained "-\a\+\ze\%(\s\|=\)"
|
|
syn match vimUserCmdAttr contained "-addr=" contains=vimUserCmdAttrKey nextgroup=vimUserCmdAttrAddr
|
|
syn match vimUserCmdAttr contained "-bang\>" contains=vimUserCmdAttrKey
|
|
syn match vimUserCmdAttr contained "-bar\>" contains=vimUserCmdAttrKey
|
|
syn match vimUserCmdAttr contained "-buffer\>" contains=vimUserCmdAttrKey
|
|
syn match vimUserCmdAttr contained "-complete=" contains=vimUserCmdAttrKey nextgroup=vimUserCmdAttrComplete,vimUserCmdError
|
|
syn match vimUserCmdAttr contained "-count\>" contains=vimUserCmdAttrKey
|
|
syn match vimUserCmdAttr contained "-count=" contains=vimUserCmdAttrKey nextgroup=vimNumber
|
|
syn match vimUserCmdAttr contained "-keepscript\>" contains=vimUserCmdAttrKey
|
|
syn match vimUserCmdAttr contained "-nargs=" contains=vimUserCmdAttrKey nextgroup=vimUserCmdAttrNargs
|
|
syn match vimUserCmdAttr contained "-range\>" contains=vimUserCmdAttrKey
|
|
syn match vimUserCmdAttr contained "-range=" contains=vimUserCmdAttrKey nextgroup=vimNumber,vimUserCmdAttrRange
|
|
syn match vimUserCmdAttr contained "-register\>" contains=vimUserCmdAttrKey
|
|
|
|
syn match vimUserCmdAttrNargs contained "[01*?+]"
|
|
syn match vimUserCmdAttrRange contained "%"
|
|
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
|
|
syn match vimUserCmdError contained "\S\+\>"
|
|
endif
|
|
|
|
syn case ignore
|
|
syn keyword vimUserCmdAttrKey contained a[ddr] ban[g] bar bu[ffer] com[plete] cou[nt] k[eepscript] n[args] ra[nge] re[gister]
|
|
|
|
" GEN_SYN_VIM: vimUserCmdAttrComplete, START_STR='syn keyword vimUserCmdAttrComplete contained', END_STR=''
|
|
syn keyword vimUserCmdAttrComplete contained arglist augroup behave breakpoint buffer color command compiler cscope diff_buffer dir dir_in_path environment event expression file file_in_path filetype filetypecmd function help highlight history keymap locale mapclear mapping menu messages option packadd retab runtime scriptnames shellcmd shellcmdline sign syntax syntime tag tag_listfiles user var
|
|
syn keyword vimUserCmdAttrComplete contained arglist augroup behave breakpoint buffer color command compiler cscope diff_buffer dir dir_in_path environment event expression file file_in_path filetype function help highlight history keymap locale mapclear mapping menu messages option packadd runtime scriptnames shellcmd shellcmdline sign syntax syntime tag tag_listfiles user var
|
|
syn keyword vimUserCmdAttrComplete contained custom customlist nextgroup=vimUserCmdAttrCompleteFunc,vimUserCmdError
|
|
syn match vimUserCmdAttrCompleteFunc contained ",\%([bwglstav]:\|<[sS][iI][dD]>\)\=\h\w*\%([.#]\h\w*\)*"hs=s+1 nextgroup=vimUserCmdError contains=vimVarScope,vimFunctionSID
|
|
|
|
" GEN_SYN_VIM: vimUserCmdAttrAddr, START_STR='syn keyword vimUserCmdAttrAddr contained', END_STR=''
|
|
syn keyword vimUserCmdAttrAddr contained arguments arg buffers buf lines line loaded_buffers load other quickfix qf tabs tab windows win
|
|
syn keyword vimUserCmdAttrAddr contained arguments arg buffers buf lines line loaded_buffers load other quickfix qf tabs tab windows win
|
|
syn match vimUserCmdAttrAddr contained "?"
|
|
syn case match
|
|
|
|
syn match vimUserCmdName contained "\<\u[[:alnum:]]*\>" skipwhite nextgroup=vimUserCmdBlock,vimUserCmdReplacement
|
|
syn match vimUserCmdName contained +\<\u[[:alnum:]]*\>\ze\s*\n\s*\%(\\\|["#]\\ \)+ skipwhite skipnl nextgroup=vimUserCmdBlock,vimUserCmdReplacement
|
|
syn region vimUserCmdReplacement contained
|
|
\ start="\S"
|
|
\ start=+^\s*\%(\\\|["#]\\ \)+
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimContinue,@vimUserCmdList,vimComFilter
|
|
\ keepend
|
|
syn region vimUserCmdBlock contained
|
|
\ matchgroup=vimSep
|
|
\ start="{\ze\s*\%($\|[#|]\)"
|
|
\ end="^\s*\zs}"
|
|
\ end="\%(\\\@<!|\s*\)\=\zs}"
|
|
\ contains=@vimDefBodyList,@vimUserCmdList
|
|
|
|
syn keyword vimDelcommand contained delc[ommand] skipwhite nextgroup=vimDelcommandAttr,vimDelcommandName
|
|
syn match vimDelcommandAttr contained "-buffer\>" skipwhite nextgroup=vimDelcommandName
|
|
syn match vimDelcommandName contained "\<\u[[:alnum:]]*\>"
|
|
|
|
" :copy (special handling for :t only) {{{3
|
|
" =====
|
|
" lower priority than [wtb]: Vim9 scoped variables at SOL
|
|
syn match vimCopy contained "\<t\>" nextgroup=vimBang
|
|
syn match vimCopy_ contained "t\>" nextgroup=vimBang
|
|
|
|
" :debug {{{3
|
|
" ======
|
|
syn keyword vimDebug contained deb[ug] skipwhite nextgroup=@vimCmdList
|
|
|
|
" :debuggreedy {{{3
|
|
" ============
|
|
syn keyword vimDebuggreedy contained debugg[reedy]
|
|
syn match vimDebuggreedy_ contained "debugg\%[reedy]\>"
|
|
|
|
" :defer {{{3
|
|
" ======
|
|
syn keyword vimDefer contained defe[r] skipwhite nextgroup=@vimFunc,vim9LambdaParams
|
|
|
|
" :delete {{{3
|
|
" =======
|
|
" TODO: handle Vim9
|
|
syn keyword vimDelete contained d[elete] skipwhite nextgroup=vimDeleteRegister,vimDeleteCount,vimPrintFlag
|
|
syn match vimDelete_ contained "d\%[elete]\>" skipwhite nextgroup=vimDeleteRegister,vimDeleteCount,vimPrintFlag
|
|
|
|
syn match vimDelete contained "\<d\%[elete]\ze\%([lp]\+\>\|#\)" nextgroup=vimPrintFlag
|
|
syn match vimDelete_ contained "d\%[elete]\ze\%([lp]\+\>\|#\)" nextgroup=vimPrintFlag
|
|
" :del is :delete only, not :delete | :list
|
|
syn match vimDelete contained "\<del\>"
|
|
syn match vimDelete_ contained "del\>"
|
|
|
|
syn match vimDelete contained "\<d\%[elete]\ze\%(_\|\d\+\>\)" nextgroup=vimDeleteRegister,vimDeleteCount
|
|
syn match vimDelete_ contained "d\%[elete]\ze\%(_\|\d\+\>\)" nextgroup=vimDeleteRegister,vimDeleteCount
|
|
|
|
syn match vimDeleteRegister contained +[-*+_]\|\\"+ skipwhite nextgroup=vimDeleteCount,vimPrintFlag
|
|
syn match vimDeleteRegister contained +\<\a+ skipwhite nextgroup=vimDeleteCount,vimPrintFlag
|
|
|
|
syn match vimDeleteCount contained "\d\+" skipwhite nextgroup=vimPrintFlag
|
|
|
|
" :echo, :execute {{{3
|
|
" ===============
|
|
" NOTE: No trailing legacy script comments
|
|
|
|
syn region vimEcho contained
|
|
\ matchgroup=vimCommand
|
|
\ start="\<ec\%[ho]\>"
|
|
\ start="\<echoe\%[rr]\>"
|
|
\ start="\<echom\%[sg]\>"
|
|
\ start="\<echoc\%[onsole]\>"
|
|
\ start="\<echon\>"
|
|
"\ TODO: default to \<echowindow\>
|
|
\ start="\<echow\%[indow]\>"
|
|
\ skip=+\\|\|||\|\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="\ze|"
|
|
\ excludenl end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,@vimExprList,vim9Comment
|
|
\ transparent
|
|
|
|
syn match vimEchohl contained "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
|
|
syn case ignore
|
|
syn keyword vimEchohlNone contained none
|
|
syn case match
|
|
|
|
syn cluster vimEcho contains=vimEcho,vimEchohl
|
|
|
|
syn region vimExecute contained
|
|
\ matchgroup=vimCommand
|
|
\ start="\<exe\%[cute]\>"
|
|
\ skip=+\\|\|||\|\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="\ze|"
|
|
\ excludenl end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,@vimExprList,vim9Comment
|
|
\ transparent
|
|
|
|
syn region vimEval contained
|
|
\ matchgroup=vimCommand
|
|
\ start="\<ev\%[al]\>"
|
|
\ skip=+\\|\|||\|\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="\ze|"
|
|
\ excludenl end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,@vimExprList,vim9Comment,vimComment
|
|
\ transparent
|
|
|
|
" :filter {{{3
|
|
" =======
|
|
syn keyword vimExFilter contained filt[er] skipwhite nextgroup=vimExFilterBang,vimExFilterPattern
|
|
syn region vimExFilterPattern contained
|
|
\ start="[[:ident:]]"
|
|
\ end="\ze[[:space:]\n]"
|
|
\ skipwhite skipnl nextgroup=@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func
|
|
\ contains=@vimSubstList
|
|
\ oneline
|
|
syn region vimExFilterPattern contained
|
|
\ matchgroup=Delimiter
|
|
\ start="\z([^[:space:][:ident:]|"]\)"
|
|
\ skip="\\\\\|\\\z1"
|
|
\ end="\z1"
|
|
\ skipwhite skipnl nextgroup=@vimCommandModifierContinue,vimCmdStart,@vimRange,@vimCmdList,@vim9Lhs,@vim9Func
|
|
\ contains=@vimSubstList
|
|
\ oneline
|
|
syn match vimExFilterBang contained "\a\@1<=!" skipwhite nextgroup=vimExFilterPattern
|
|
|
|
" :catch, :throw {{{3
|
|
" ==============
|
|
syn keyword vimThrow contained th[row] skipwhite nextgroup=@vimExprList
|
|
syn keyword vimCatch contained cat[ch] skipwhite nextgroup=vimCatchPattern
|
|
syn region vimCatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
|
|
|
|
" :export {{{3
|
|
" =======
|
|
if s:vim9script
|
|
syn keyword vim9Export export contained
|
|
\ skipwhite nextgroup=vim9Abstract,vim9ClassBody,vim9Const,vimDef,vimDefFold,vim9EnumBody,vim9Final,vim9InterfaceBody,vim9Type,vim9Var
|
|
endif
|
|
|
|
" :filetype {{{3
|
|
" =========
|
|
syn match vimFiletype contained "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
|
|
syn match vimFTError contained "\I\i*"
|
|
endif
|
|
syn keyword vimFTCmd contained filet[ype]
|
|
syn keyword vimFTOption contained detect indent off on plugin
|
|
|
|
" :for {{{3
|
|
" ====
|
|
" handles Vim9 and legacy for now
|
|
syn region vimFor contained
|
|
\ matchgroup=vimCommand
|
|
\ start="\<for\>" end="\<in\>"
|
|
\ skipwhite skipnl nextgroup=@vimForInContinue,vim9ForInComment,@vimExprList
|
|
\ contains=@vimContinue,vimVar,vimVarList,vim9Variable,vim9VariableList
|
|
\ transparent
|
|
|
|
syn match vim9ForInComment contained "#.*" skipwhite skipempty nextgroup=vim9ForInComment,@vimExprList
|
|
|
|
syn match vimForInContinue contained "^\s*\zs\\" skipwhite skipnl nextgroup=@vimForInContinue,@vimExprList contains=vimLeadingWhitespace
|
|
syn match vimForInContinueComment contained '^\s*\zs["#]\\ .*' skipwhite skipnl nextgroup=@vimForInContinue,@vimExprList contains=vimLeadingWhitespace
|
|
syn cluster vimForInContinue contains=vimForInContinue,vimForInContinueComment
|
|
|
|
" :global, :vglobal {{{3
|
|
" =================
|
|
" TODO: [:.-] should only be removed for Vim9
|
|
" : docs state ! is not allowed as a pattern delimiter but it works
|
|
syn region vimGlobalPattern contained
|
|
\ matchgroup=Delimiter
|
|
\ start=+\z([^[:space:][:alnum:]\\"|:.-]\)+
|
|
\ skip="\\."
|
|
\ end="\z1"
|
|
\ excludenl
|
|
\ end="$"
|
|
\ skipwhite nextgroup=vimCmdStart,@vimRange,@vimCmdList
|
|
\ contains=@vimSubstList
|
|
syn match vimGlobal contained "g\%[lobal]\>!\=[:.-]\@!" skipwhite nextgroup=vimGlobalPattern contains=vimBang
|
|
syn match vimGlobal contained "v\%[global]\>!\=[:.-]\@!" skipwhite nextgroup=vimGlobalPattern contains=vimBang
|
|
|
|
" :grep, :make {{{3
|
|
" ============
|
|
" | is the command separator, escaped with \| all other backslashes are passed through literally, no tail comments
|
|
syn keyword vimGrep contained gr[ep] lgr[ep] skipwhite nextgroup=vimGrepBang,vimGrepArgs,vimCmdSep
|
|
syn match vimGrep_ contained "l\=gr\%[ep]\>" skipwhite nextgroup=vimGrepBang,vimGrepArgs,vimCmdSep
|
|
syn keyword vimGrepadd contained grepa[dd] lgrepa[dd] skipwhite nextgroup=vimGrepBang,vimGrepArgs,vimCmdSep
|
|
syn match vimGrepadd_ contained "l\=grepa\%[dd]\>" skipwhite nextgroup=vimGrepBang,vimGrepArgs,vimCmdSep
|
|
syn region vimGrepArgs contained
|
|
\ start="|\@!\S"
|
|
\ skip=+\n\s*\%(\\\|[#"]\\ \)+
|
|
\ end="\ze|"
|
|
\ end="$"
|
|
"\ TODO: include vimSpecFile
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=vimGrepBarEscape
|
|
syn match vimGrepBarEscape contained "\\|"
|
|
syn match vimGrepBang contained "\a\@1<=!" skipwhite nextgroup=vimGrepArgs,vimCmdSep
|
|
|
|
syn keyword vimMake contained mak[e] lmak[e] skipwhite nextgroup=vimMakeBang,vimMakeArgs,vimCmdSep
|
|
syn region vimMakeArgs contained
|
|
\ start="|\@!\S"
|
|
\ skip=+\n\s*\%(\\\|[#"]\\ \)+
|
|
\ end="\ze|"
|
|
\ end="$"
|
|
\ nextgroup=vimCmdSep
|
|
"\ TODO: include vimSpecFile
|
|
\ contains=vimMakeBarEscape
|
|
syn match vimMakeBarEscape contained "\\|"
|
|
syn match vimMakeBang contained "\a\@1<=!" skipwhite nextgroup=vimMakeArgs,vimCmdSep
|
|
|
|
" :help, :helpgrep, :lhelpgrep {{{3
|
|
" ============================
|
|
syn keyword vimHelp contained h[elp] skipwhite nextgroup=vimHelpBang,vimHelpArg,vimHelpEndCommand
|
|
" TODO: match wildcards, ignoring exceptions?
|
|
syn region vimHelpArg contained
|
|
\ start="\S"
|
|
\ matchgroup=Special
|
|
\ end="\%(@\a\a\)\=\ze\s*\%($\|\%x0d\|\%x00\||[^|]\)"
|
|
\ skipwhite nextgroup=vimHelpEndCommand
|
|
\ oneline
|
|
syn match vimHelpBang contained "\a\@1<=!" skipwhite nextgroup=vimHelpArg,vimHelpEndCommand
|
|
syn match vimHelpEndCommand contained "\ze|[^|]" skipwhite nextgroup=vimCmdSep
|
|
syn match vimHelpEndCommand contained "\%x0d\|\%x00" skipwhite nextgroup=vimCmdStart,@vimRange,@vimCmdList,vimFunc,vim9Block,@vim9Lhs
|
|
|
|
syn keyword vimHelpgrep contained helpg[rep] lh[elpgrep] skipwhite nextgroup=vimHelpgrepPattern
|
|
syn region vimHelpgrepPattern contained
|
|
\ start="\S"
|
|
\ matchgroup=Special
|
|
\ end="@\a\a\>"
|
|
\ end="$"
|
|
\ contains=@vimSubstList
|
|
\ oneline
|
|
|
|
" :highlight {{{3
|
|
" ==========
|
|
syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
|
|
syn match vimHiCtermError contained "\D\i*"
|
|
endif
|
|
syn keyword vimHighlight contained hi[ghlight] skipwhite nextgroup=vimHiBang,@vimHighlightCluster
|
|
syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
|
|
|
|
syn case ignore
|
|
" Conceal is a generated low-priority match
|
|
syn match vimHiGroup contained "\%(\<Conceal\>\)\@!\i\+"
|
|
syn keyword vimHiNone contained NONE
|
|
syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
|
|
syn keyword vimFgBgAttrib contained none bg background fg foreground
|
|
syn case match
|
|
syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
|
|
syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
|
|
syn case ignore
|
|
syn keyword vimHiCtermColor contained black blue brown cyan darkblue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey grey40 grey50 grey90 lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred lightyellow magenta red seagreen white yellow
|
|
syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
|
|
syn case match
|
|
|
|
syn match vimHiFontname contained "[a-zA-Z\-*]\+"
|
|
syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
|
|
syn match vimHiGuiRgb contained "#\x\{6}"
|
|
|
|
" :highlight {group} {key}={arg} ... {{{3
|
|
syn cluster vimHiCluster contains=vimGroup,vimHLGroup,vimHiGroup,vimHiNone,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9Comment
|
|
syn region vimHiKeyList contained
|
|
\ start="\i\+"
|
|
\ skip=+\\\\\|\\|\|\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="\ze|"
|
|
\ excludenl
|
|
\ end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,@vimHiCluster
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
|
|
syn match vimHiKeyError contained "\i\+="he=e-1
|
|
endif
|
|
syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
|
|
syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
|
|
syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
|
|
syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
|
|
syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
|
|
syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
|
|
syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
|
|
syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
|
|
syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
|
|
syn match vimHiTermcap contained "\S\+" contains=vimNotation
|
|
syn match vimHiNmbr contained '\d\+'
|
|
|
|
" :highlight clear {{{3
|
|
syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHLGroup,vimHiGroup
|
|
|
|
" :highlight link {{{3
|
|
" see tst24 (hi def vs hi) (Jul 06, 2018)
|
|
"syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
|
|
" TODO: simplify and allow line continuations --djk
|
|
syn region vimHiLink contained
|
|
\ matchgroup=Type
|
|
\ start="\%(\<hi\%[ghlight]!\=\s\+\)\@<=\%(\%(def\%[ault]\s\+\)\=link\>\|\<def\%[ault]\>\)"
|
|
\ skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+
|
|
\ end="\ze|"
|
|
\ excludenl
|
|
\ end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,@vimHiCluster
|
|
|
|
" :history {{{3
|
|
" ========
|
|
" TODO: handle Vim9 "history" variable assignment (like `:wincmd =`, but a common variable name)
|
|
syn keyword vimHistory contained his[tory] skipwhite nextgroup=vimHistoryName,vimHistoryRange,vimCmdSep,vimComment,vim9Comment
|
|
syn keyword vimHistoryName contained c[md] s[earch] e[xpr] i[nput] d[ebug] a[ll] skipwhite nextgroup=vimHistoryRange,vimCmdSep,vimComment,vim9Comment
|
|
syn match vimHistoryName contained "[:/?=@>]" skipwhite nextgroup=vimHistoryRange,vimCmdSep,vimComment,vim9Comment
|
|
syn match vimHistoryRange contained "-\=\<\d\+\>\%(\s*,\)\=" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
|
syn match vimHistoryRange contained ",\s*-\=\d\+\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
|
syn match vimHistoryRange contained "-\=\<\d\+\s*,\s*-\=\d\+\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
|
|
|
" :if, :else, :elseif, :endif {{{3
|
|
" ===========================
|
|
syn keyword vimIf contained if skipwhite nextgroup=@vimExprList,vimNotation
|
|
syn keyword vimElseif contained elsei[f] skipwhite nextgroup=@vimExprList,vimNotation
|
|
syn keyword vimElse contained el[se] skipwhite nextgroup=vimComment,vim9Comment
|
|
syn keyword vimEndif contained en[dif] skipwhite nextgroup=vimComment,vim9Comment
|
|
|
|
" :import {{{3
|
|
" =======
|
|
syn keyword vimImportAutoload contained autoload skipwhite nextgroup=vimImportFilename
|
|
if s:vim9script
|
|
syn region vimImportFilename contained
|
|
\ start="\S"
|
|
\ skip=+\%#=1
|
|
"\ continuation operators at SOL
|
|
\\n\%(\s*#.*\n\)*\s*\%([[:punct:]]\+\&[^#"'(]\)
|
|
\\|
|
|
"\ continuation operators at EOL
|
|
\\%(\%([[:punct:]]\+\&[^#"')]\)\s*\%(#.*\)\=\)\@<=$
|
|
\\|
|
|
\\n\%(\s*#.*\n\)*\s*as\s
|
|
\\|
|
|
\\%(^\s*#.*\)\@<=$
|
|
\\|
|
|
\\n\s*\%(\\\|#\\ \)
|
|
\+
|
|
\ matchgroup=vimCommand
|
|
\ end="\s\+\zsas\ze\s\+\h"
|
|
\ matchgroup=NONE
|
|
\ end="$"
|
|
\ skipwhite nextgroup=vimImportName
|
|
\ contains=@vim9Continue,@vimExprList,vim9Comment
|
|
\ transparent
|
|
else
|
|
syn region vimImportFilename contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|"\\ \)+
|
|
\ matchgroup=vimCommand
|
|
\ end="\s\+\zsas\ze\s\+\h"
|
|
\ matchgroup=NONE
|
|
\ end="$"
|
|
\ skipwhite nextgroup=vimImportName
|
|
\ contains=@vimContinue,@vimExprList
|
|
\ transparent
|
|
endif
|
|
syn match vimImportName contained "\%(\<as\s\+\)\@<=\h\w*\>" skipwhite nextgroup=@vimComment
|
|
syn keyword vimImport contained imp[ort] skipwhite nextgroup=vimImportAutoload,vimImportFilename
|
|
|
|
" :language {{{3
|
|
" =========
|
|
syn keyword vimLanguage contained lan[guage] skipwhite nextgroup=@vimLanguageName,vimLanguageCategory,vimCmdSep,vimComment,vim9Comment
|
|
syn keyword vimLanguageCategory contained col[late] cty[pe] mes[sages] tim[e] skipwhite nextgroup=@vimLanguageName
|
|
|
|
" [language[_territory][.codeset][@modifier]] and the reserved "C" and "POSIX"
|
|
syn match vimLanguageName contained "[[:alnum:]][[:alnum:]._@-]*[[:alnum:]]" nextgroup=vimCmdSep,vimComment,vim9Comment
|
|
syn keyword vimLanguageNameReserved contained C POSIX nextgroup=vimCmdSep,vimComment,vim9Comment
|
|
syn cluster vimLanguageName contains=vimLanguageName,vimLanguageNameReserved
|
|
|
|
" :loadkeymap {{{3
|
|
" ===========
|
|
|
|
syn match vimKeymapStart contained "^" skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
|
|
syn match vimKeymapLhs contained "\S\+" skipwhite nextgroup=vimKeymapRhs contains=vimNotation
|
|
syn match vimKeymapRhs contained "\S\+" skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
|
|
syn match vimKeymapTailComment contained "\S.*"
|
|
|
|
if s:vim9script
|
|
syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
|
|
else
|
|
syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
|
|
endif
|
|
syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
|
|
|
|
syn keyword vimLoadkeymap contained loadk[eymap] skipwhite skipnl nextgroup=vimKeymapMappings
|
|
syn region vimKeymapMappings contained
|
|
\ start="^"
|
|
\ end="\%$"
|
|
\ contains=vimKeymapStart
|
|
\ transparent
|
|
|
|
" :lockvar, :unlockvar {{{3
|
|
" ====================
|
|
syn keyword vimLockvar contained lockv[ar] skipwhite nextgroup=vimLockvarBang,vimLockvarDepth,vimLockvarVars
|
|
syn keyword vimUnlockvar contained unlo[ckvar] skipwhite nextgroup=vimLockvarBang,vimLockvarDepth,vimLockvarVars
|
|
syn match vimLockvarBang contained "\a\@1<=!" skipwhite nextgroup=vimLockvarVars
|
|
syn match vimLockvarDepth contained "\<[0-3]\>" skipwhite nextgroup=vimLockvarVars
|
|
syn region vimLockvarVars contained
|
|
\ start="\h" skip=+\n\s*\%(\\\|"\\ \)\|^\s*"\\ + end="$" end="\ze[|"]"
|
|
\ nextgroup=vimCmdSep,vimComment
|
|
\ contains=@vimContinue,vimVar
|
|
|
|
" :map {{{3
|
|
" ====
|
|
" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap contained', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
|
|
syn keyword vimMap contained cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] om[ap] ono[remap] smap snor[emap] tma[p] tno[remap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapMod,vimMapLhs
|
|
syn match vimMap contained "\<map\>" skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
|
|
syn keyword vimMap contained no[remap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
|
|
" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap contained', END_STR='skipwhite nextgroup=vimMapMod'
|
|
syn keyword vimMap contained cmapc[lear] imapc[lear] lmapc[lear] nmapc[lear] omapc[lear] smapc[lear] tmapc[lear] vmapc[lear] xmapc[lear] skipwhite nextgroup=vimMapMod
|
|
syn keyword vimMap contained mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
|
|
" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap contained', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
|
|
syn keyword vimUnmap contained cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] tunma[p] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapMod,vimMapLhs
|
|
syn keyword vimUnmap contained unm[ap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
|
|
|
|
syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation,vimMapLeader skipwhite nextgroup=vimMapRhs
|
|
syn match vimMapLhs contained +\%(.\|\S\)\+\ze\s*\n\s*\%(\\\|["#]\\ \)+ contains=vimCtrlChar,vimNotation,vimMapLeader skipwhite skipnl nextgroup=vimMapRhsContinue
|
|
|
|
syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
|
|
syn match vimMapMod contained
|
|
\ "\%#=1<\%(buffer\|expr\|nowait\|script\|silent\|special\|unique\)>" skipwhite nextgroup=vimMapMod,vimMapLhs contains=vimMapModKey,vimMapModErr
|
|
syn region vimMapRhs contained
|
|
\ start="\S"
|
|
\ skip=+\\|\|\@1<=|\|\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="\ze|"
|
|
\ end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,vimCtrlChar,vimNotation,vimMapLeader
|
|
syn region vimMapRhsContinue contained
|
|
\ start=+^\s*\%(\\\|["#]\\ \)+
|
|
\ skip=+\\|\|\@1<=|\|\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="\ze|"
|
|
\ end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,vimCtrlChar,vimNotation,vimMapLeader
|
|
syn match vimMapLeader contained "\%#=1\c<\%(local\)\=leader>" contains=vimMapLeaderKey
|
|
syn keyword vimMapModKey contained buffer expr nowait script silent special unique
|
|
syn case ignore
|
|
syn keyword vimMapLeaderKey contained leader localleader
|
|
syn case match
|
|
|
|
" :mark {{{3
|
|
" =====
|
|
VimL syn match vimMark contained "\<k\%([a-zA-Z0-9]\>\|[[\]<>'`]\)\@=" nextgroup=@vimMarkArg
|
|
VimL syn match vimMark_ contained "k\%([a-zA-Z0-9]\>\|[[\]<>'`]\)\@=" nextgroup=@vimMarkArg
|
|
VimL syn keyword vimMark contained k skipwhite nextgroup=@vimMarkArg
|
|
VimL syn match vimMark_ contained "k\>" skipwhite nextgroup=@vimMarkArg
|
|
syn keyword vimMark contained ma[rk] skipwhite nextgroup=@vimMarkArg
|
|
syn match vimMark_ contained "ma\%[rk]\>" skipwhite nextgroup=@vimMarkArg
|
|
|
|
syn match vimMarkArg contained "[a-zA-Z]\>\|[[\]<>'`]" skipwhite nextgroup=vimCmdSep,vimComment
|
|
syn match vimMarkArgError contained "["^.(){}0-9]"
|
|
syn cluster vimMarkArg contains=vimMarkArg,vimMarkArgError
|
|
|
|
" :match {{{3
|
|
" ======
|
|
syn keyword vimMatch contained mat[ch] skipwhite nextgroup=vimMatchGroup,vimMatchNone
|
|
syn match vimMatch_ contained "mat\%[ch]\>" skipwhite nextgroup=vimMatchGroup,vimMatchNone
|
|
|
|
" conflicts with :match
|
|
" syn keyword vimMatch contained mat[ch] skipwhite nextgroup=vimMatchGroup,vimMatchNone
|
|
syn match vimMatchGroup contained "[[:alnum:]._-]\+" skipwhite nextgroup=vimMatchPattern
|
|
syn case ignore
|
|
syn keyword vimMatchNone contained none
|
|
syn case match
|
|
syn region vimMatchPattern contained
|
|
\ matchgroup=Delimiter
|
|
\ start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)"
|
|
\ skip="\\\\\|\\\z1"
|
|
\ end="\z1"
|
|
\ contains=@vimSubstList
|
|
\ oneline
|
|
|
|
" :menu {{{3
|
|
" =====
|
|
" NOTE: tail comments disallowed
|
|
" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu contained', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
|
|
syn keyword vimMenu contained 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] sme[nu] snoreme[nu] sunme[nu] tlm[enu] tln[oremenu] tlu[nmenu] tm[enu] tu[nmenu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] xme[nu] xnoreme[nu] xunme[nu] skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn match vimMenu_ contained "a\%(m\%[enu]\|n\%[oremenu]\)\>" skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn match vimMenu_ contained "c\%(me\%[nu]\|noreme\%[nu]\)\>" skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn match vimMenu_ contained "i\%(me\%[nu]\|noreme\%[nu]\)\>" skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn match vimMenu_ contained "me\%[nu]\>" skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn match vimMenu_ contained "n\%(me\%[nu]\|noreme\%[nu]\|oreme\%[nu]\)\>" skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn match vimMenu_ contained "o\%(me\%[nu]\|noreme\%[nu]\)\>" skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn match vimMenu_ contained "s\%(me\%[nu]\|noreme\%[nu]\)\>" skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn match vimMenu_ contained "t\%(lm\%[enu]\|ln\%[oremenu]\|m\%[enu]\)\>" skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn match vimMenu_ contained "v\%(me\%[nu]\|noreme\%[nu]\)\>" skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn match vimMenu_ contained "x\%(me\%[nu]\|noreme\%[nu]\)\>" skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus
|
|
syn keyword vimMenu contained popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
|
|
syn region vimMenuRhs contained
|
|
\ start="|\@!\S"
|
|
\ skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+
|
|
\ end="$"
|
|
\ end="\ze|"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,vimNotation
|
|
syn region vimMenuRhsContinue contained
|
|
\ start=+^\s*\%(\\\|"\\ \)+
|
|
\ skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+
|
|
\ end="$"
|
|
\ end="\ze|"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,vimNotation
|
|
syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
|
|
syn match vimMenuName +\.\@!\%(\\\s\|\S\)\+\ze\s*\n\s*\%(\\\|["#]\\ \)+ contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
|
|
syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
|
|
syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
|
|
syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
|
|
syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
|
|
syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
|
|
|
|
syn region vimMenutranslate contained
|
|
\ matchgroup=vimCommand
|
|
\ start="\<menut\%[ranslate]\>"
|
|
\ skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+
|
|
\ end="$"
|
|
\ end="\ze|"
|
|
\ matchgroup=vimMenuClear
|
|
\ end="\<clear\ze\s*\%(["#|]\|$\)"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,vimMenutranslateName
|
|
\ keepend
|
|
\ transparent
|
|
" oneline is sufficient to match the current formatting in runtime/lang/*.vim
|
|
syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
|
|
syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
|
|
|
|
" :normal {{{3
|
|
" =======
|
|
" syn match vimNormal contained "\<norm\%[al]\>!\=" skipwhite nextgroup=vimNormalArg contains=vimBang
|
|
syn match vimNormal contained "norm\%[al]\>!\=" skipwhite nextgroup=vimNormalArg contains=vimBang
|
|
syn region vimNormalArg contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimContinue
|
|
|
|
" :packadd {{{3
|
|
" ========
|
|
syn keyword vimPackadd contained pa[ckadd] skipwhite nextgroup=vimPackaddBang,vimPackaddArg,vimComment,vim9Comment,vimCmdSep
|
|
syn region vimPackaddArg contained
|
|
\ start=+["#|]\@!\S+
|
|
\ end="\ze\s*$"
|
|
\ end=+\ze\s*\\\@1<!["#|]+
|
|
\ skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
\ contains=vimSpecFile,@vimWildcard
|
|
\ oneline
|
|
syn match vimPackaddBang contained "\a\@1<=!" skipwhite nextgroup=vimPackaddArg
|
|
|
|
" :profile {{{3
|
|
" ========
|
|
syn match vimProfileBang contained "\a\@1<=!" skipwhite nextgroup=vimProfileArg
|
|
syn keyword vimProfileArg contained start skipwhite nextgroup=vimProfilePattern
|
|
syn keyword vimProfileArg contained func skipwhite nextgroup=vimProfilePattern
|
|
syn keyword vimProfileArg contained file skipwhite nextgroup=vimProfilePattern
|
|
syn keyword vimProfileArg contained stop pause skipwhite nextgroup=vimCmdSep,@vimComment
|
|
syn keyword vimProfileArg contained continue dump skipwhite nextgroup=vimCmdSep,@vimComment
|
|
" TODO: match file pattern
|
|
syn region vimProfilePattern contained
|
|
\ start="\S"
|
|
\ skip=+\\[|"#]+
|
|
\ end="$" end=+\ze\s*[|"#]+
|
|
\ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
|
syn keyword vimProfile contained prof[ile] skipwhite nextgroup=vimProfileBang,vimProfileArg
|
|
|
|
syn keyword vimProfdelArg contained func skipwhite nextgroup=vimProfilePattern
|
|
syn keyword vimProfdelArg contained file skipwhite nextgroup=vimProfilePattern
|
|
syn keyword vimProfdelArg contained here skipwhite nextgroup=vimCmdSep,@vimComment
|
|
syn keyword vimProfdel contained profd[el] skipwhite nextgroup=vimProfdelArg
|
|
|
|
" :promptfind, :promptrepl {{{3
|
|
" ========================
|
|
syn region vimPromptArg contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimContinue
|
|
syn keyword vimPrompt contained promptf[ind] promptr[epl] skipwhite nextgroup=vimPromptArg
|
|
|
|
" :redir {{{3
|
|
" ======
|
|
syn keyword vimRedir contained redi[r] skipwhite nextgroup=vimRedirBang,vimRedirFileOperator,vimRedirVariableOperator,vimRedirRegister,vimRedirEnd
|
|
syn match vimRedirBang contained "\a\@1<=!" skipwhite nextgroup=vimRedirFileOperator
|
|
|
|
syn match vimRedirFileOperator contained ">>\=" skipwhite nextgroup=vimRedirFile
|
|
syn region vimRedirFile contained
|
|
\ start="\S"
|
|
\ matchgroup=Normal
|
|
\ end="\s*$"
|
|
\ end="\s*\ze[|"]"
|
|
\ nextgroup=vimCmdSep,vimComment
|
|
\ contains=vimSpecFile
|
|
syn match vimRedirRegisterOperator contained ">>\="
|
|
syn match vimRedirRegister contained "@[a-zA-Z*+"]" nextgroup=vimRedirRegisterOperator
|
|
syn match vimRedirVariableOperator contained "=>>\=" skipwhite nextgroup=vimVar
|
|
syn keyword vimRedirEnd contained END
|
|
|
|
" :return {{{3
|
|
" =======
|
|
syn keyword vimReturn contained ret[urn] skipwhite nextgroup=@vimExprList,vimNotation
|
|
|
|
" :runtime {{{3
|
|
" ========
|
|
syn keyword vimRuntime contained ru[ntime] skipwhite nextgroup=vimRuntimeBang,vimRuntimeWhere,vimRuntimeArgs
|
|
syn keyword vimRuntimeWhere contained
|
|
\ START OPT PACK ALL
|
|
\ skipwhite nextgroup=vimRuntimeArgs
|
|
syn region vimRuntimeArgs contained
|
|
\ start=+["#|]\@!\S+
|
|
\ skip=+\s*\n\s*\%(\\\|["#]\\ \)\|^\s*["#]\\ +
|
|
\ end="\ze\s*$"
|
|
\ end=+\ze\s*\\\@1<!["#|]+
|
|
\ skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
\ contains=@vimContinue,vimSpecFile,@vimWildcard
|
|
syn match vimRuntimeBang contained "\a\@1<=!" skipwhite nextgroup=vimRuntimeWhere,vimRuntimeArgs
|
|
|
|
" :set {{{3
|
|
" ====
|
|
syn keyword vimSet contained setl[ocal] setg[lobal] se[t] skipwhite nextgroup=vimSetBang,vimCmdSep,vimComment,vimSetArgs
|
|
syn region vimSetComment contained start=+"+ skip=+\n\s*\%(\\\||"\\ \)+ end="$" contains=@vimCommentGroup,vimCommentString extend
|
|
syn match vimSetCmdSep contained "|" skipwhite nextgroup=@vimCmdList,@vimFunc
|
|
syn match vimSetEscape contained "\\\%(\\[|"]\|.\)"
|
|
syn match vimSetBarEscape contained "\\|"
|
|
syn match vimSetQuoteEscape contained +\\"+
|
|
syn region vimSetArgs contained
|
|
\ start="\l\|<"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)\|^\s*"\\ +
|
|
\ end=+\ze\\\@1<![|"]+
|
|
"\ assume this isn't an escaped char with backslash on the previous line
|
|
\ end=+^\s*\\\ze[|"]+
|
|
\ end="\ze\s#"
|
|
\ end="$"
|
|
\ nextgroup=vimSetCmdSep,vimSetComment,vim9Comment
|
|
\ contains=@vimContinue,vimErrSetting,vimOption,vimSetAll,vimSetTermcap
|
|
\ keepend
|
|
" TODO: restrict this to valid values?
|
|
syn match vimOption contained "<[^>]\+>" contains=vimOption
|
|
syn region vimSetEqual contained
|
|
\ matchgroup=vimOper
|
|
\ start="[=:]\|[-+^]="
|
|
\ skip=+\\\s\|^\s*\%(\\\|["#]\\ \)+
|
|
\ end="\ze\s"
|
|
\ contains=@vimContinue,vimCtrlChar,vimEnvvar,vimNotation,vimSetSep,vimSetEscape,vimSetBarEscape,vimSetQuoteEscape
|
|
syn match vimSetBang contained "\a\@1<=!" skipwhite nextgroup=vimSetAll,vimSetTermcap
|
|
syn keyword vimSetAll contained all nextgroup=vimSetMod
|
|
syn keyword vimSetTermcap contained termcap
|
|
syn match vimSetSep contained "[,:]"
|
|
syn match vimSetMod contained "\a\@1<=\%(&vim\=\|[!&?<]\)"
|
|
|
|
" :sleep {{{3
|
|
" ======
|
|
syn keyword vimSleep contained sl[eep] skipwhite nextgroup=vimSleepBang,vimSleepArg
|
|
syn match vimSleep_ contained "sl\%[eep]\>" skipwhite nextgroup=vimSleepBang,vimSleepArg
|
|
syn match vimSleepBang contained "\a\@1<=!" skipwhite nextgroup=vimSleepArg
|
|
syn match vimSleepArg contained "\<\%(\d\+\)\=m\=\>"
|
|
|
|
" :sort {{{3
|
|
" =====
|
|
syn keyword vimSort contained sor[t] skipwhite nextgroup=vimSortBang,@vimSortOptions,vimSortPattern,vimCmdSep
|
|
syn match vimSort_ contained "sort\=\>" skipwhite nextgroup=vimSortBang,@vimSortOptions,vimSortPattern,vimCmdSep
|
|
syn match vimSortBang contained "\a\@1<=!" skipwhite nextgroup=@vimSortOptions,vimSortPattern,vimCmdSep
|
|
syn match vimSortOptionsError contained "\a\+"
|
|
syn match vimSortOptions contained "\<[ilur]*[nfxob]\=[ilur]*\>" skipwhite nextgroup=vimSortPattern,vimCmdSep
|
|
syn region vimSortPattern contained
|
|
\ matchgroup=Delimiter
|
|
\ start="\z([^[:space:][:alpha:]|]\)"
|
|
\ skip="\\\\\|\\\z1"
|
|
\ end="\z1"
|
|
\ skipwhite nextgroup=@vimSortOptions,vimCmdSep
|
|
\ contains=@vimSubstList
|
|
\ oneline
|
|
|
|
syn cluster vimSortOptions contains=vimSortOptions,vimSortOptionsError
|
|
|
|
" :substitute {{{3
|
|
" ===========
|
|
syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
|
|
syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
|
|
syn cluster vimSubstList add=vimCollection
|
|
syn match vimSubst contained "\<\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat,vimSubstFlags,vimSubstCount
|
|
syn match vimSubst contained "\<\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
|
|
syn match vimSubst contained "\<\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\%(\d\+\)\@=" skipwhite nextgroup=vimSubstCount
|
|
syn match vimSubst_ contained "\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat,vimSubstFlags,vimSubstCount
|
|
syn match vimSubst_ contained "\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
|
|
syn match vimSubst_ contained "\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\%(\d\+\)\@=" skipwhite nextgroup=vimSubstCount
|
|
syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
|
|
" & and # after :s are always pattern delimiters not flags
|
|
syn match vimSubstFlags contained "[&cegiIlnpr#]\+" skipwhite nextgroup=vimSubstCount
|
|
syn match vimSubstCount contained "\d\+\>"
|
|
" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
|
|
" : # is allowed but "not recommended" (see :h pattern-delimiter)
|
|
syn region vimSubstPat contained
|
|
\ matchgroup=vimSubstDelim
|
|
\ start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)"rs=s+1
|
|
\ skip="\\\\\|\\\z1"
|
|
\ end="\z1"re=e-1,me=e-1
|
|
\ excludenl
|
|
\ end="$"
|
|
\ nextgroup=vimSubstRep4
|
|
\ contains=@vimSubstList
|
|
syn region vimSubstRep4 contained
|
|
\ matchgroup=vimSubstDelim
|
|
\ start="\z(.\)"
|
|
\ skip="\\\\\|\\\z1"
|
|
\ end="\z1"
|
|
\ matchgroup=vimNotation
|
|
\ end="<[cC][rR]>"
|
|
\ excludenl
|
|
\ end="$"
|
|
\ contains=@vimSubstRepList
|
|
\ nextgroup=vimSubstFlagErr
|
|
syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
|
|
syn match vimCollClassErr contained "\[:.\{-\}:\]"
|
|
syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
|
|
syn match vimSubstSubstr contained "\\z\=\d"
|
|
syn match vimSubstTwoBS contained "\\\\"
|
|
|
|
" TODO: flags, unlike count, must follow immediately
|
|
syn match vimSubst contained "&&\=" skipwhite nextgroup=vimSubstFlags,vimSubstCount
|
|
syn match vimSubst contained "\~&\=" skipwhite nextgroup=vimSubstFlags,vimSubstCount
|
|
|
|
" two and three letter variants (matched as :s + flags, count may follow immediately)
|
|
syn match vimSubst contained "\<sc[egiIlnp]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
|
|
syn match vimSubst contained "\<sg[ceiIlnpr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
|
|
syn match vimSubst contained "\<si[ceInpr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
|
|
syn match vimSubst contained "\<sI[ceginplr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
|
|
syn match vimSubst contained "\<sr[cgiInplr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
|
|
syn match vimSubst_ contained "sc[egiIlnp]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
|
|
syn match vimSubst_ contained "sg[ceiIlnpr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
|
|
syn match vimSubst_ contained "si[ceInpr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
|
|
syn match vimSubst_ contained "sI[ceginplr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
|
|
syn match vimSubst_ contained "sr[cgiInplr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
|
|
|
|
" Vi compatibility
|
|
syn match vimSubstDelim contained "\\"
|
|
syn match vimSubstPat contained "\\\ze[/?&]" contains=vimSubstDelim nextgroup=vimSubstRep4
|
|
|
|
" :syntax {{{3
|
|
" =======
|
|
syn region vimGroupList contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
"\ need to consume the whitespace
|
|
\ end="\s"he=e-1
|
|
\ end="$"
|
|
\ contains=@vimGroupListContinue,vimGroupSpecial,vimGroupListContinueComma
|
|
syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
|
|
syn match vimGroupListComma contained ","
|
|
syn match vimGroupListContinueComma contained "\s\+,\s*\|,\s\+" contains=vimGroupListComma
|
|
syn match vimGroupListContinueComma contained "\s*,\s*\%(\n\s*\%(\\\s\+\|["#]\\ .*\)\)\+" contains=@vimGroupListContinue,vimGroupListComma
|
|
|
|
syn match vimGroupListEquals contained "=" skipwhite skipnl nextgroup=vimGroupListContinueStart,vimGroupList
|
|
" the first continuation line does not terminate the list at whitepace after \
|
|
syn match vimGroupListContinueStart contained "^\%(\s*["#]\\ .*\n\)*\s*\\\s\+" skipwhite nextgroup=vimGroupList contains=@vimGroupListContinue transparent
|
|
|
|
syn match vimGroupListContinue contained "^\s*\\" skipwhite skipnl nextgroup=@vimGroupListContinue,vimGroupListContinueComma contains=vimWhitespace
|
|
syn match vimGroupListContinueComment contained '^\s*["#]\\ .*' skipwhite skipnl nextgroup=@vimGroupListContinue contains=vimWhitespace
|
|
syn cluster vimGroupListContinue contains=vimGroupListContinue,vimGroupListContinueComment
|
|
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
|
|
syn match vimSynError contained "\i\+"
|
|
endif
|
|
syn match vimSynContains contained "\<contains\>" skipwhite nextgroup=vimGroupListEquals
|
|
syn match vimSynContainedin contained "\<containedin\>" skipwhite nextgroup=vimGroupListEquals
|
|
syn match vimSynNextgroup contained "\<nextgroup\>" skipwhite nextgroup=vimGroupListEquals
|
|
if has("conceal")
|
|
" no whitespace allowed after '='
|
|
syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
|
|
syn match vimSynCcharValue contained "\S"
|
|
endif
|
|
|
|
syn keyword vimSyntax contained sy[ntax] skipwhite nextgroup=vimSynType,@vimComment
|
|
syn cluster vimFunctionBodyList add=vimSyntax
|
|
|
|
" :syntax case {{{3
|
|
syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
|
|
syn match vimSynCaseError contained "\i\+"
|
|
endif
|
|
syn keyword vimSynCase contained ignore match
|
|
|
|
" :syntax clear {{{3
|
|
syn keyword vimSynType contained clear
|
|
|
|
" :syntax cluster {{{3
|
|
syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
|
|
syn region vimClusterName contained
|
|
\ keepend
|
|
\ matchgroup=vimGroupName
|
|
\ start="\h\w*\>"
|
|
\ skip=+\\\\\|\\\|\n\s*\%(\\\|"\\ \)+
|
|
\ end="\ze|"
|
|
\ end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
|
|
syn match vimGroupAdd contained "\<add\>" skipwhite nextgroup=vimGroupListEquals
|
|
syn match vimGroupRem contained "\<remove\>" skipwhite nextgroup=vimGroupListEquals
|
|
|
|
" :syntax conceal {{{3
|
|
syn match vimSynType contained "\<conceal\>" skipwhite nextgroup=vimSynConceal,vimSynConcealError
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynconcealerror")
|
|
syn match vimSynConcealError contained "\i\+"
|
|
endif
|
|
syn keyword vimSynConceal contained on off
|
|
|
|
" :syntax foldlevel {{{3
|
|
syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldlevel,vimSynFoldlevelError
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldlevelerror")
|
|
syn match vimSynFoldlevelError contained "\i\+"
|
|
endif
|
|
syn keyword vimSynFoldlevel contained start minimum
|
|
|
|
" :syntax iskeyword {{{3
|
|
syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimSynIskeyword
|
|
syn keyword vimSynIskeyword contained clear
|
|
syn match vimSynIskeyword contained "\S\+" contains=vimSynIskeywordSep
|
|
syn match vimSynIskeywordSep contained ","
|
|
|
|
" :syntax include {{{3
|
|
syn keyword vimSynType contained include skipwhite nextgroup=vimSynIncludeCluster
|
|
syn match vimSynIncludeCluster contained "@[_a-zA-Z0-9]\+\>"
|
|
|
|
" :syntax keyword {{{3
|
|
syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynContainedin,vimSynKeyError
|
|
syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
|
|
syn region vimSynKeyRegion contained
|
|
\ keepend
|
|
\ matchgroup=vimGroupName
|
|
\ start="\h\w*\>"
|
|
\ skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+
|
|
\ end="\ze|"
|
|
\ end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimSynKeyGroup
|
|
syn match vimSynKeyOpt contained "\%#=1\<\%(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
|
|
syn match vimSynKeyError contained "\<oneline\>"
|
|
|
|
|
|
" :syntax match {{{3
|
|
syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynContainedin,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
|
|
syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
|
|
syn region vimSynMatchRegion contained
|
|
\ keepend
|
|
\ matchgroup=vimGroupName
|
|
\ start="\h\w*\>"
|
|
\ skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+
|
|
\ end="\ze|"
|
|
\ end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimSynMtchGroup
|
|
syn match vimSynMtchOpt contained "\%#=1\<\%(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
|
|
|
|
" :syntax {{{3
|
|
syn keyword vimSynType contained enable list manual off on reset
|
|
|
|
" :syntax region {{{3
|
|
syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
|
|
syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynContainedin,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
|
|
syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
|
|
syn region vimSynRegion contained
|
|
\ keepend
|
|
\ matchgroup=vimGroupName
|
|
\ start="\h\w*"
|
|
\ skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+
|
|
\ end="\ze|"
|
|
\ end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=@vimSynRegGroup
|
|
syn match vimSynRegOpt contained "\%#=1\<\%(conceal\%(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
|
|
syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
|
|
syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
|
|
VimExtend syn region vimSynRegPat contained
|
|
\ matchgroup=Delimiter
|
|
\ start="\z([-`~!@#$%^&*_=+;:'",./?]\)"
|
|
\ skip=/\\\\\|\\\z1\|\n\s*\%(\\\|"\\ \)/
|
|
\ end="\z1"
|
|
\ skipwhite nextgroup=vimSynPatMod,vimSynReg
|
|
\ contains=@vimSynRegPatGroup
|
|
syn match vimSynPatMod contained "\%#=1\%(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\%([-+]\d\+\)\="
|
|
syn match vimSynPatMod contained "\%#=1\%(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\%([-+]\d\+\)\=," nextgroup=vimSynPatMod
|
|
syn match vimSynPatMod contained "lc=\d\+"
|
|
syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
|
|
syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
|
|
syn match vimSynNotPatRange contained "\\\\\|\\\["
|
|
syn match vimMtchComment contained '"[^"]\+$'
|
|
|
|
" :syntax spell {{{3
|
|
syn keyword vimSynType contained spell skipwhite nextgroup=vimSynSpell,vimSynSpellError
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynspellerror")
|
|
syn match vimSynSpellError contained "\i\+"
|
|
endif
|
|
syn keyword vimSynSpell contained default notoplevel toplevel
|
|
|
|
" :syntax sync {{{3
|
|
syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncClear,vimSyncMatch,vimSyncError,vimSyncRegion,vimSyncArgs
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
|
|
syn match vimSyncError contained "\i\+"
|
|
endif
|
|
|
|
syn region vimSyncArgs contained
|
|
\ start="\S"
|
|
\ skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+
|
|
\ end="\ze|"
|
|
\ end="$"
|
|
\ nextgroup=vimCmdSep
|
|
\ contains=vimSyncLines,vimSyncLinebreak,vimSyncLinecont,vimSyncFromstart,vimSyncCcomment
|
|
|
|
syn keyword vimSyncCcomment contained ccomment skipwhite nextgroup=vimGroupName
|
|
syn keyword vimSyncClear contained clear skipwhite nextgroup=vimSyncGroupName
|
|
syn keyword vimSyncFromstart contained fromstart
|
|
syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
|
|
syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynRegion
|
|
syn match vimSyncLinebreak contained "\<linebreaks=" nextgroup=vimNumber
|
|
syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
|
|
syn match vimSyncLines contained "\<lines=" nextgroup=vimNumber
|
|
syn match vimSyncLines contained "\<minlines=" nextgroup=vimNumber
|
|
syn match vimSyncLines contained "\<maxlines=" nextgroup=vimNumber
|
|
syn match vimSyncGroupName contained "\<\h\w*\>" skipwhite nextgroup=vimSyncKey,vimSynRegPat
|
|
syn match vimSyncKey contained "\<grouphere\>" skipwhite nextgroup=vimSyncGroup
|
|
syn match vimSyncKey contained "\<groupthere\>" skipwhite nextgroup=vimSyncGroup
|
|
syn match vimSyncGroup contained "\<\h\w*\>" skipwhite nextgroup=vimSynRegPat,vimSyncNone
|
|
syn keyword vimSyncNone contained NONE
|
|
|
|
" :syntime {{{3
|
|
" ========
|
|
syn keyword vimSyntimeArg contained on off clear report skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep
|
|
syn keyword vimSyntime contained synti[me] skipwhite nextgroup=vimSyntimeArg
|
|
|
|
" :terminal {{{3
|
|
" =========
|
|
syn match vimTerminal contained "\<ter\%[minal]\>" skipwhite nextgroup=vimTerminalOptions,vimTerminalCommand
|
|
syn match vimTerminal contained +\<ter\%[minal]\>\ze\s*\n\s*\%(\\\|["#]\\ \)+ skipwhite skipnl nextgroup=vimTerminalOptions,vimTerminalCommand,@vimTerminalContinue
|
|
syn match vimTerminal_ contained "ter\%[minal]\>" skipwhite nextgroup=vimTerminalOptions,vimTerminalCommand
|
|
syn match vimTerminal_ contained +ter\%[minal]\>\ze\s*\n\s*\%(\\\|["#]\\ \)+ skipwhite skipnl nextgroup=vimTerminalOptions,vimTerminalCommand,@vimTerminalContinue
|
|
|
|
syn match vimTerminalContinue contained "^\s*\\" skipwhite skipnl nextgroup=@vimTerminalContinue,vimTerminalOptions,vimTerminalCommand contains=vimLeadingWhitespace
|
|
syn match vimTerminalContinueComment contained '^\s*["#]\\ .*' skipwhite skipnl nextgroup=@vimTerminalContinue,vimTerminalOptions,vimTerminalCommand contains=vimLeadingWhitespace
|
|
syn cluster vimTerminalContinue contains=vimTerminalContinue,vimTerminalContinueComment
|
|
|
|
syn region vimTerminalCommand contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimContinue
|
|
|
|
syn region vimTerminalOptions contained
|
|
\ start="++"
|
|
\ skip=/\s\+++\|\%(\n\|^\)\s*\%(\\\|["#]\\ \)/
|
|
\ end="\s"
|
|
\ end="$"
|
|
\ skipwhite nextgroup=vimTerminalCommand
|
|
\ contains=@vimContinue,vimTerminalOption
|
|
\ transparent
|
|
|
|
syn match vimTerminalOption contained "++\%(\%(no\)\=close\|open\|curwin\|hidden\|norestore\|shell\)\>"
|
|
syn match vimTerminalOption contained "++kill=" nextgroup=vimTerminalKillOptionArg
|
|
syn match vimTerminalOption contained "++\%(rows\|cols\)=" nextgroup=vimTerminalSizeOptionArg
|
|
syn match vimTerminalOption contained "++eof=" nextgroup=vimTerminalEofOptionArg
|
|
syn match vimTerminalOption contained "++type=" nextgroup=vimTerminalTypeOptionArg
|
|
syn match vimTerminalOption contained "++api=" nextgroup=vimTerminalApiOptionArg
|
|
|
|
syn match vimTerminalApiOptionArg contained "\<\S\+\>"
|
|
syn match vimTerminalEofOptionArg contained "\<\S\+\>"
|
|
syn match vimTerminalSizeOptionArg contained "\<\d\+\>"
|
|
syn keyword vimTerminalKillOptionArg contained term hup quit int kill
|
|
syn match vimTerminalKillOptionArg contained "\<\d\+\>"
|
|
syn keyword vimTerminalTypeOptionArg contained conpty winpty
|
|
|
|
" :uniq {{{3
|
|
" =====
|
|
syn keyword vimUniq contained uni[q] skipwhite nextgroup=vimUniqBang,@vimUniqOptions,vimUniqPattern,vimCmdSep
|
|
syn match vimUniq_ contained "\<uniq\=\>" skipwhite nextgroup=vimUniqBang,@vimUniqOptions,vimUniqPattern,vimCmdSep
|
|
syn match vimUniqBang contained "\a\@1<=!" skipwhite nextgroup=@vimUniqOptions,vimUniqPattern,vimCmdSep
|
|
syn match vimUniqOptionsError contained "\a\+"
|
|
syn match vimUniqOptions contained "\<[ilur]*\>" skipwhite nextgroup=vimUniqPattern,vimCmdSep
|
|
syn region vimUniqPattern contained
|
|
\ matchgroup=Delimiter
|
|
\ start="\z([^[:space:][:alpha:]|]\)"
|
|
\ skip="\\\\\|\\\z1"
|
|
\ end="\z1"
|
|
\ skipwhite nextgroup=@vimUniqOptions,vimCmdSep
|
|
\ contains=@vimSubstList
|
|
\ oneline
|
|
|
|
syn cluster vimUniqOptions contains=vimUniqOptions,vimUniqOptionsError
|
|
|
|
" :vimgrep, lvimgrep, :vimgrepadd, :lvimgrepadd {{{3
|
|
" =============================================
|
|
syn keyword vimVimgrep contained vim[grep] lv[imgrep] skipwhite nextgroup=vimVimgrepBang,vimVimgrepPattern
|
|
syn keyword vimVimgrepadd contained vimgrepa[dd] lvimgrepa[dd] skipwhite nextgroup=vimVimgrepBang,vimVimgrepPattern
|
|
syn match vimVimgrep_ contained "l\=vim\%[grep]\>" skipwhite nextgroup=vimVimgrepBang,vimVimgrepPattern
|
|
syn match vimVimgrepadd_ contained "l\=vimgrepa\%[dd]\>" skipwhite nextgroup=vimVimgrepBang,vimVimgrepPattern
|
|
syn match vimVimgrepBang contained "\a\@1<=!" skipwhite nextgroup=vimVimgrepPattern
|
|
syn region vimVimgrepPattern contained
|
|
\ start="[[:ident:]]"
|
|
\ end="\ze[[:space:]\n]"
|
|
\ skipwhite nextgroup=vimVimgrepFile,vimCmdSep
|
|
\ contains=@vimSubstList
|
|
\ oneline
|
|
syn region vimVimgrepPattern contained
|
|
\ matchgroup=Delimiter
|
|
\ start="\z([^[:space:][:ident:]|"]\)"
|
|
\ skip="\\\\\|\\\z1"
|
|
\ end="\z1"
|
|
\ skipwhite nextgroup=vimVimgrepFlags,vimVimgrepFile,vimCmdSep
|
|
\ contains=@vimSubstList
|
|
\ oneline
|
|
syn match vimVimgrepEscape contained "\\\%(\\|\|.\)"
|
|
syn match vimVimgrepBarEscape contained "\\|"
|
|
syn region vimVimgrepFile contained
|
|
\ start="|\@!\S"
|
|
\ end="\ze|"
|
|
\ end="\ze\s"
|
|
\ end="$"
|
|
\ skipwhite nextgroup=vimVimgrepFile
|
|
\ contains=vimSpecFile,vimVimgrepEscape,vimVimgrepBarEscape
|
|
syn match vimVimgrepFlags contained "\<[gjf]\{,3\}\>" skipwhite nextgroup=vimVimgrepFile
|
|
|
|
" :while {{{3
|
|
" ======
|
|
syn keyword vimWhile contained wh[ile] skipwhite nextgroup=@vimExprList,vimNotation
|
|
|
|
" :wincmd {{{3
|
|
" =======
|
|
syn keyword vimWincmd contained winc[md] skipwhite nextgroup=vimWincmdArg
|
|
syn match vimWincmd_ contained "winc\%[md]\>" skipwhite nextgroup=vimWincmdArg
|
|
" TODO: consider extracting this list from the help file
|
|
syn match vimWincmdArg contained
|
|
\ "\<[sSvnqojkhlwWtbpPrRxKJHLTfFz]\>\|[\^:=\-+_<>|\]}]\|\<g\s\+[\]}]\|\<g[fFtT]\>"
|
|
\ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
|
|
|
" only handles oneline assignments
|
|
" NOTE: handled with higher priority later in file
|
|
" Vim9 syn match vim9Wincmd "\s\=\<winc\%[md]\>\ze\s\+=\s*\%([#|]\|$\)" skipwhite nextgroup=vimWincmdArg
|
|
|
|
" :write {{{3
|
|
" ======
|
|
" lower priority than [wtb]: Vim9 scoped variables at SOL
|
|
syn match vimWrite contained "\<w\%[rite]\>" nextgroup=vimBang
|
|
syn match vimWrite_ contained "w\%[rite]\>" nextgroup=vimBang
|
|
|
|
" :z {{{3
|
|
" ==
|
|
syn match vimCommand_ contained "z[-+^.=]\=\>"
|
|
syn match vimCommand contained "\<z[-+^.=]\=\>"
|
|
|
|
" Operators: {{{2
|
|
" =========
|
|
syn cluster vimOperGroup contains=@vimContinue,@vimExprList,vim9Comment,vim9LineComment,vimContinueString
|
|
syn match vimOper "\a\@<!!" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
|
|
syn match vimOper "||\|&&\|[-+*/%.]" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
|
|
" syn match vimOper "?" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString
|
|
syn match vimOper "\s\@1<=?\ze\s\|\s\@1<=?$" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString
|
|
" distinguish ternary : from ex-colon
|
|
syn match vimOper "\s\@1<=:\ze\s\|\s\@1<=:$" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString
|
|
syn match vimOper "??" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString
|
|
syn match vimOper "=" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString,vimSpecFile
|
|
syn match vimOper "\%#=1\%(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\)[?#]\=" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString,vimSpecFile
|
|
syn match vimOper "\<is\%(not\)\=\>" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString,vimSpecFile
|
|
syn match vimOper "\<is\%(not\)\=[?#]" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString,vimSpecFile
|
|
syn region vimOperParen
|
|
\ matchgroup=vimParenSep
|
|
\ start="("
|
|
\ end=")"
|
|
\ nextgroup=vimSubscriptBrackets,vimSubscriptDot
|
|
\ contains=@vimOperGroup
|
|
syn region vimOperParen
|
|
\ matchgroup=vimSep
|
|
\ start="#\={"
|
|
\ end="}"
|
|
\ nextgroup=vimSubscriptBrackets,vimSubscriptDot,vimVar
|
|
\ contains=@vimOperGroup,vimDictColon
|
|
syn match vimDictColon contained ":" skipwhite nextgroup=@vimExprList
|
|
syn region vimOperParen contained
|
|
\ matchgroup=vimSep
|
|
\ start="\["
|
|
\ end="]"
|
|
\ contains=@vimOperGroup
|
|
\ nextgroup=vimSubscriptBrackets,vimSubscriptDot,vimVar
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
|
|
syn match vimOperError ")"
|
|
endif
|
|
|
|
syn match vimOperContinue contained "^\s*\\" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList contains=vimLeadingWhitespace
|
|
syn match vimOperContinueComment contained '^\s*["#]\\ .*' skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList contains=vimLeadingWhitespace
|
|
syn cluster vimOperContinue contains=vimOperContinue,vimOperContinueComment
|
|
|
|
" Lambda Expressions: {{{2
|
|
" ==================
|
|
syn match vimLambdaOperator contained "->" skipwhite nextgroup=@vimExprList
|
|
syn region vimLambda contained
|
|
\ matchgroup=vimLambdaBrace
|
|
\ start=+{\ze[[:space:][:alnum:]_.,]*\%(\n\s*\%(\\[[:space:][:alnum:]_.,]*\|"\\ .*\)\)*->+
|
|
\ skip=+\n\s*\%(\\\|"\\ \)+
|
|
\ end="}" end="$"
|
|
\ contains=@vimContinue,@vimExprList,vimLambdaParams
|
|
syn match vimLambdaParams contained "\%({\n\=\)\@1<=\_.\{-}\%(->\)\@=" nextgroup=vimLambdaOperator contains=@vimContinue,vimFunctionParam
|
|
|
|
syn match vim9LambdaOperator contained "=>" skipwhite skipempty nextgroup=@vimExprList,vim9LambdaBlock,vim9LambdaOperatorComment
|
|
syn match vim9LambdaParen contained "[()]"
|
|
syn match vim9LambdaParams contained
|
|
\ "(\%(\<func(\|[^(]\)*\%(\n\s*\\\%(\<func(\|[^(]\)*\|\n\s*#\\ .*\)*\ze\s\+=>"
|
|
\ skipwhite nextgroup=vim9LambdaOperator
|
|
\ contains=@vim9Continue,vimDefParam,vim9LambdaParen,vim9LambdaReturnType
|
|
syn region vim9LambdaReturnType contained start=")\@1<=:\s" end="\ze\s*#" end="\ze\s*=>" contains=@vim9Continue,@vimType transparent
|
|
syn region vim9LambdaBlock contained matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
|
|
|
|
syn match vim9LambdaOperatorComment contained "#.*" skipwhite skipempty nextgroup=@vimExprList,vim9LambdaBlock,vim9LambdaOperatorComment
|
|
|
|
" Functions: Tag is provided for those who wish to highlight tagged functions {{{2
|
|
" =========
|
|
syn cluster vimFunctionBodyCommon contains=vimContinue,vimCtrlChar,vimDef,vimFBVar,vimFunction,vimNumber,vimOper,vimOperParen,vimSpecFile,vimString,vimFunctionFold,vimDefFold,vimCmdSep
|
|
syn cluster vimFunctionBodyList contains=@vimFunctionBodyCommon,vimLineStart,vimComment,vimConst,vimLet
|
|
syn cluster vimDefBodyList contains=@vimFunctionBodyCommon,vim9LineStart,vim9Comment,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For,@vimSpecialVar,@vim9Func,vim9LhsVariable_,vim9Wincmd
|
|
|
|
syn region vimFunctionPattern contained
|
|
\ matchgroup=vimOper
|
|
\ start="/"
|
|
\ end="$"
|
|
\ contains=@vimSubstList
|
|
|
|
syn match vimFunctionBang contained "\a\@1<=!" skipwhite nextgroup=vimFunctionName
|
|
syn match vimDefBang contained "\a\@1<=!" skipwhite nextgroup=vimDefName
|
|
syn match vimFunctionSID contained "\c<sid>"
|
|
syn match vimFunctionScope contained "\<[bwglstav]:"
|
|
syn match vimFunctionName contained
|
|
\ "\%(<[sS][iI][dD]>\|[bwglstav]:\)\=\%([[:alnum:]_#.]\+\|{.\{-1,}}\)\+"
|
|
\ skipwhite nextgroup=vimFunctionParams,vimCmdSep,vimComment,vim9Comment
|
|
\ contains=vimFunctionError,vimFunctionScope,vimFunctionSID,Tag
|
|
syn match vimDefName contained
|
|
\ "\%(<[sS][iI][dD]>\|[bwglstav]:\)\=\%([[:alnum:]_#.]\+\|{.\{-1,}}\)\+"
|
|
\ nextgroup=vimDefTypeParams,vimDefParams,vimCmdSep,vimComment,vim9Comment
|
|
\ contains=vimFunctionError,vimFunctionScope,vimFunctionSID,Tag
|
|
|
|
syn match vimFunction contained "\<fu\%[nction]\>" skipwhite nextgroup=vimFunctionBang,vimFunctionName,vimFunctionPattern,vimCmdSep,vimComment
|
|
syn match vimDef contained "\<def\>" skipwhite nextgroup=vimDefBang,vimDefName,vimFunctionPattern,vimCmdSep,vimComment
|
|
|
|
syn region vimFunctionComment contained
|
|
\ start=+".*+
|
|
\ skip=+\n\s*\%(\\\|"\\ \)+
|
|
\ end="$"
|
|
\ skipwhite skipempty nextgroup=vimFunctionBody,vimEndfunction
|
|
syn region vimDefComment contained
|
|
\ start="#.*"
|
|
\ skip=+\n\s*\%(\\\|#\\ \)+
|
|
\ end="$"
|
|
\ skipwhite skipempty nextgroup=vimDefBody,vimEnddef
|
|
|
|
syn region vimFunctionParams contained
|
|
\ matchgroup=Delimiter
|
|
\ start="("
|
|
\ skip=+\n\s*\%(\\\|"\\ \)+
|
|
\ end=")"
|
|
\ skipwhite skipempty nextgroup=vimFunctionBody,vimFunctionComment,vimEndfunction,vimFunctionMod,vim9CommentError
|
|
\ contains=vimFunctionParam,vimOperParen,@vimContinue
|
|
syn region vimDefParams contained
|
|
\ matchgroup=Delimiter
|
|
\ start="("
|
|
\ end=")"
|
|
\ skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError
|
|
\ contains=vimDefParam,vim9Comment,vimFunctionParamEquals,vimOperParen
|
|
syn region vimDefTypeParams contained
|
|
\ matchgroup=Delimiter
|
|
\ start="<"
|
|
\ end=">"
|
|
\ nextgroup=vimDefParams
|
|
\ contains=vim9DefTypeParam
|
|
syn match vimFunctionParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFunctionParamEquals
|
|
syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFunctionParamEquals
|
|
syn match vim9DefTypeParam contained "\<\u\w*\>"
|
|
|
|
syn match vimFunctionParamEquals contained "=" skipwhite nextgroup=@vimExprList
|
|
syn match vimFunctionMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipempty nextgroup=vimFunctionBody,vimFunctionComment,vimEndfunction,vimFunctionMod,vim9CommentError
|
|
|
|
syn region vimFunctionBody contained
|
|
\ start="^."
|
|
\ matchgroup=vimCommand
|
|
\ end="\<endf\%[unction]\>"
|
|
\ skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
|
|
\ contains=@vimFunctionBodyList
|
|
syn region vimDefBody contained
|
|
\ start="^."
|
|
\ matchgroup=vimCommand
|
|
\ end="\<enddef\>"
|
|
\ skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
|
|
\ contains=@vimDefBodyList
|
|
|
|
syn keyword vimEndfunction contained endf[unction] skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
|
|
syn keyword vimEnddef contained enddef skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
|
|
|
|
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
|
|
VimExtend syn region vimFunctionFold contained
|
|
\ start="\<fu\%[nction]!"
|
|
"\ assume no dict literal in curly-brace name expressions
|
|
\ start="\<fu\%[nction]\>\s*\%([[:alnum:]_:<>.#]\+\|{.\{-1,}}\)\+\s*("
|
|
\ end="^\s*:\=\s*endf\%[unction]\>"
|
|
\ contains=vimFunction
|
|
\ fold keepend transparent
|
|
VimExtend syn region vimDefFold contained
|
|
\ start="\<def!"
|
|
"\ assume no dict literal in curly-brace name expressions
|
|
\ start="\<def\>\s*\%([[:alnum:]_:<>.#]\+\|{.\{-1,}}\)\+[<(]"
|
|
\ end="^\s*:\=\s*enddef\>"
|
|
\ contains=vimDef
|
|
\ fold keepend transparent
|
|
endif
|
|
|
|
syn match vimDelfunctionBang contained "\a\@1<=!" skipwhite nextgroup=vimFunctionName
|
|
syn keyword vimDelfunction contained delf[unction] skipwhite nextgroup=vimDelfunctionBang,vimFunctionName
|
|
|
|
" Types: {{{2
|
|
" =====
|
|
|
|
syn region vimReturnType contained
|
|
\ start=")\@1<=:\%(\s\|\n\)\@="
|
|
\ skip=+\n\s*\%(\\\|#\\ \)\|^\s*#\\ +
|
|
\ end="$"
|
|
\ matchgroup=vim9Comment
|
|
"\ allow for legacy script tail comment error
|
|
\ end="\ze[#"]"
|
|
\ skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError
|
|
\ contains=@vim9Continue,@vimType
|
|
\ transparent
|
|
syn match vimParamType contained ":\s" skipwhite skipnl nextgroup=@vimType contains=vimTypeSep
|
|
|
|
syn match vimTypeSep contained ":\%(\s\|\n\)\@=" skipwhite nextgroup=@vimType
|
|
syn keyword vimType contained blob bool channel float job number string void
|
|
syn keyword vimTypeAny contained any
|
|
syn match vimTypeObject contained "\<object<\@=" nextgroup=vimTypeObjectArgs
|
|
syn region vimTypeObjectArgs contained
|
|
\ matchgroup=vimTypeObjectBracket
|
|
\ start="<"
|
|
\ end=">"
|
|
\ contains=vimTypeAny,vimTypeObject,vimUserType
|
|
\ oneline
|
|
\ transparent
|
|
syn match vimType contained "\<\%(func\)\>"
|
|
syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vim9Continue,@vimType transparent
|
|
syn region vimCompoundType contained matchgroup=vimType start="\<tuple<" end=">" contains=@vim9Continue,@vimType transparent
|
|
syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
|
|
syn match vimUserType contained "\<\%(\h\w*\.\)*\u\w*\>"
|
|
|
|
syn cluster vimType contains=vimType,vimTypeAny,vimTypeObject,vimCompoundType,vimUserType
|
|
|
|
" Classes, Enums And Interfaces: {{{2
|
|
" =============================
|
|
|
|
if s:vim9script
|
|
|
|
" Methods {{{3
|
|
syn match vim9MethodDef contained "\<def\>" skipwhite nextgroup=vim9MethodDefName,vim9ConstructorDefName
|
|
syn match vim9MethodDefName contained "\<\h\w*\>" nextgroup=vim9MethodDefParams,vim9MethodDefTypeParams contains=@vim9MethodName
|
|
syn region vim9MethodDefParams contained
|
|
\ matchgroup=Delimiter start="(" end=")"
|
|
\ skipwhite skipnl nextgroup=vim9MethodDefBody,vim9MethodDefComment,vimEnddef,vim9MethodDefReturnType,vimCommentError
|
|
\ contains=vimDefParam,vim9Comment,vimFunctionParamEquals
|
|
syn region vim9MethodDefTypeParams contained
|
|
\ matchgroup=Delimiter
|
|
\ start="<"
|
|
\ end=">"
|
|
\ nextgroup=vim9MethodDefParams
|
|
\ contains=vim9DefTypeParam
|
|
|
|
syn match vim9ConstructorDefName contained "\<_\=new\w*\>"
|
|
\ nextgroup=vim9ConstructorDefParams,vim9ConstuctorDefTypeParams
|
|
\ contains=@vim9MethodName
|
|
syn match vim9ConstructorDefParam contained "\<\%(this\.\)\=\h\w*\>"
|
|
\ skipwhite nextgroup=vimParamType,vimFunctionParamEquals
|
|
\ contains=vim9This,vimOper
|
|
syn region vim9ConstructorDefParams contained
|
|
\ matchgroup=Delimiter start="(" end=")"
|
|
\ skipwhite skipnl nextgroup=vim9MethodDefBody,vim9MethodDefComment,vimEnddef,vimCommentError
|
|
\ contains=vim9ConstructorDefParam,vim9Comment,vimFunctionParamEquals
|
|
syn region vim9ConstuctorDefTypeParams contained
|
|
\ matchgroup=Delimiter
|
|
\ start="<"
|
|
\ end=">"
|
|
\ nextgroup=vim9ConstructorDefParams
|
|
\ contains=vim9DefTypeParam
|
|
|
|
syn region vim9MethodDefReturnType contained
|
|
\ start=")\@1<=:\%(\s\|\n\)\@="
|
|
\ skip=+\n\s*\%(\\\|#\\ \)\|^\s*#\\ +
|
|
\ end="$"
|
|
\ matchgroup=vim9Comment
|
|
\ end="\ze#"
|
|
\ skipwhite skipnl nextgroup=vim9MethodDefBody,vim9MethodDefComment,vimEnddef,vimCommentError
|
|
\ contains=@vim9Continue,vimType,vimTypeSep
|
|
\ transparent
|
|
|
|
syn region vim9MethodDefComment contained
|
|
\ start="#.*"
|
|
\ skip=+\n\s*\%(\\\|#\\ \)+
|
|
\ end="$"
|
|
\ skipwhite skipempty nextgroup=vim9MethodDefBody,vimEnddef
|
|
|
|
syn region vim9MethodDefBody contained
|
|
\ start="^.\=" matchgroup=vimCommand end="\<enddef\>"
|
|
\ skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
|
|
\ contains=@vim9MethodDefBodyList
|
|
|
|
syn cluster vim9MethodDefBodyList contains=@vimDefBodyList,vim9This,vim9Super
|
|
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
|
|
syn match vim9MethodNameError contained "\<[a-z0-9]\i\>"
|
|
endif
|
|
syn match vim9MethodName contained "\<_\=new\w*\>"
|
|
syn keyword vim9MethodName contained empty len string
|
|
|
|
syn cluster vim9MethodName contains=vim9MethodName,vim9MethodNameError
|
|
|
|
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
|
|
VimExtend syn region vim9MethodDefFold contained
|
|
\ start="\%(^\s*\%(:\=static\s\+\)\=\)\@16<=:\=def\s\+\h\w*[<(]"
|
|
\ end="^\s*:\=enddef\>"
|
|
\ contains=vim9MethodDef
|
|
\ fold keepend transparent
|
|
endif
|
|
|
|
syn cluster vim9MethodDef contains=vim9MethodDef,vim9MethodDefFold
|
|
|
|
" Classes {{{3
|
|
syn cluster vim9ClassBodyList contains=vim9Abstract,vim9Class,vim9Comment,vim9LineComment,@vim9Continue,@vimExprList,vim9Extends,vim9Implements,@vim9MethodDef,vim9Public,vim9Static,vim9Const,vim9Final,vim9This,vim9Super,vim9Var
|
|
|
|
syn match vim9Class contained "\<class\>" skipwhite nextgroup=vim9ClassName
|
|
syn match vim9ClassName contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9Extends,vim9Implements
|
|
syn match vim9SuperClass contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9Implements
|
|
syn match vim9ImplementedInterface contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9InterfaceListComma,vim9Extends
|
|
syn match vim9InterfaceListComma contained "," skipwhite skipnl nextgroup=vim9ImplementedInterface
|
|
syn keyword vim9Abstract contained abstract skipwhite skipnl nextgroup=vim9ClassBody,vim9AbstractDef
|
|
syn keyword vim9Extends contained extends skipwhite skipnl nextgroup=vim9SuperClass
|
|
syn keyword vim9Implements contained implements skipwhite skipnl nextgroup=vim9ImplementedInterface
|
|
syn keyword vim9Public contained public
|
|
syn keyword vim9Static contained static
|
|
" FIXME: don't match as dictionary keys, remove when operators are not
|
|
" shared between Vim9 and legacy script
|
|
syn match vim9This contained "\.\@1<!\<this\>:\@!"
|
|
" super must be followed by '.'
|
|
syn match vim9Super contained "\.\@1<!\<super\.\@="
|
|
|
|
VimFoldc syn region vim9ClassBody contained
|
|
\ start="\<class\>"
|
|
\ matchgroup=vimCommand
|
|
\ end="\<endclass\>"
|
|
\ contains=@vim9ClassBodyList
|
|
\ transparent
|
|
|
|
" Enums {{{3
|
|
syn cluster vim9EnumBodyList contains=vim9Comment,vim9LineComment,@vim9Continue,vim9Enum,@vimExprList,@vim9MethodDef,vim9Public,vim9Static,vim9Const,vim9Final,vim9This,vim9Var
|
|
|
|
syn match vim9Enum contained "\<enum\>" skipwhite nextgroup=vim9EnumName
|
|
|
|
syn match vim9EnumName contained "\<\u\w*\>" skipwhite skipempty nextgroup=vim9EnumNameTrailing,vim9EnumNameEmpty,vim9EnumNameComment,@vim9EnumNameContinue,vim9EnumImplements
|
|
syn match vim9EnumNameTrailing contained "\S.*"
|
|
syn region vim9EnumNameComment contained
|
|
\ start="#" skip="\n\s*\%(\\\|#\\ \)" end="$"
|
|
\ skipwhite skipempty nextgroup=vim9EnumNameComment,vim9EnumValue
|
|
\ contains=@vimCommentGroup,vimCommentString
|
|
" vim9EnumName's "skipempty" should only apply to comments and enum values and not implements clauses
|
|
syn match vim9EnumNameEmpty contained "^" skipwhite skipempty nextgroup=vim9EnumNameComment,vim9EnumValue
|
|
" allow line continuation between enum name and "implements"
|
|
syn match vim9EnumNameContinue contained
|
|
\ "^\s*\\"
|
|
\ skipwhite skipnl nextgroup=vim9EnumNameTrailing,vim9EnumNameEmpty,vim9EnumNameComment,@vim9EnumNameContinue,vim9EnumImplements
|
|
\ contains=vimLeadingWhitespace
|
|
syn match vim9EnumNameContinueComment contained
|
|
\ "^\s*#\\ .*"
|
|
\ skipwhite skipnl nextgroup=vim9EnumNameEmpty,vim9EnumNameComment,@vim9EnumNameContinue
|
|
\ contains=vimLeadingWhitespace
|
|
syn cluster vim9EnumNameContinue contains=vim9EnumNameContinue,vim9EnumNameContinueComment
|
|
|
|
" enforce enum value list location
|
|
syn match vim9EnumValue contained "\<\a\w*\>" nextgroup=vim9EnumValueTypeArgs,vim9EnumValueArgList,vim9EnumValueListComma,vim9Comment
|
|
syn match vim9EnumValueListComma contained "," skipwhite skipempty nextgroup=vim9EnumValue,vim9EnumValueListCommaComment
|
|
syn region vim9EnumValueListCommaComment contained
|
|
\ start="#" skip="\n\s*\%(\\\|#\\ \)" end="$"
|
|
\ skipwhite skipempty nextgroup=vim9EnumValueListCommaComment,vim9EnumValue
|
|
\ contains=@vimCommentGroup,vimCommentString
|
|
syn region vim9EnumValueTypeArgs contained
|
|
\ matchgroup=Delimiter
|
|
\ start="<\ze\a"
|
|
\ end=">"
|
|
\ nextgroup=vim9EnumValueArgList
|
|
\ contains=@vimType
|
|
\ oneline
|
|
syn region vim9EnumValueArgList contained
|
|
\ matchgroup=vimParenSep start="(" end=")"
|
|
\ nextgroup=vim9EnumValueListComma
|
|
\ contains=@vimExprList,vimContinueString,vim9Comment
|
|
|
|
syn keyword vim9EnumImplements contained implements skipwhite nextgroup=vim9EnumImplementedInterface
|
|
syn match vim9EnumImplementedInterface contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9EnumInterfaceListComma,vim9EnumImplementedInterfaceComment,vim9EnumValue
|
|
syn match vim9EnumInterfaceListComma contained "," skipwhite nextgroup=vim9EnumImplementedInterface
|
|
syn region vim9EnumImplementedInterfaceComment contained
|
|
\ start="#" skip="\n\s*\%(\\\|#\\ \)" end="$"
|
|
\ skipwhite skipempty nextgroup=vim9EnumImplementedInterfaceComment,vim9EnumValue
|
|
\ contains=@vimCommentGroup,vimCommentString
|
|
|
|
VimFolde syn region vim9EnumBody contained
|
|
\ start="\<enum\>"
|
|
\ matchgroup=vimCommand
|
|
\ end="\<endenum\>"
|
|
\ contains=@vim9EnumBodyList
|
|
\ transparent
|
|
|
|
" Interfaces {{{3
|
|
" TODO: limit to decl only - no init values
|
|
syn cluster vim9InterfaceBodyList contains=vim9Comment,vim9LineComment,@vim9Continue,vim9Extends,vim9Interface,vim9AbstractDef,vim9Var
|
|
|
|
syn match vim9Interface contained "\<interface\>" skipwhite nextgroup=vim9InterfaceName
|
|
syn match vim9InterfaceName contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9Extends
|
|
|
|
syn keyword vim9AbstractDef contained def skipwhite nextgroup=vim9AbstractDefName
|
|
syn match vim9AbstractDefName contained "\<\h\w*\>" skipwhite nextgroup=vim9AbstractDefParams,vim9AbstractDefTypeParams contains=@vim9MethodName
|
|
syn region vim9AbstractDefParams contained
|
|
\ matchgroup=Delimiter start="(" end=")"
|
|
\ skipwhite skipnl nextgroup=vimDefComment,vim9AbstractDefReturnType,vimCommentError
|
|
\ contains=vimDefParam,vim9Comment,vimFunctionParamEquals
|
|
syn region vim9AbstractDefReturnType contained
|
|
\ start=")\@1<=:\s" end="$" matchgroup=vim9Comment end="\ze[#"]"
|
|
\ skipwhite skipnl nextgroup=vimDefComment,vimCommentError
|
|
\ contains=vimTypeSep
|
|
\ transparent
|
|
syn region vim9AbstractDefTypeParams contained
|
|
\ matchgroup=Delimiter
|
|
\ start="<"
|
|
\ end=">"
|
|
\ nextgroup=vim9AbstractDefParams
|
|
\ contains=vim9DefTypeParam
|
|
|
|
VimFoldi syn region vim9InterfaceBody contained
|
|
\ start="\<interface\>"
|
|
\ matchgroup=vimCommand
|
|
\ end="\<endinterface\>"
|
|
\ contains=@vim9InterfaceBodyList
|
|
\ transparent
|
|
|
|
" Type Aliases {{{3
|
|
syn keyword vim9Type contained ty[pe] skipwhite nextgroup=vim9TypeAlias,vim9TypeAliasError
|
|
syn match vim9TypeAlias contained "\<\u\w*\>" skipwhite nextgroup=vim9TypeEquals
|
|
syn match vim9TypeEquals contained "=" skipwhite nextgroup=@vimType
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_notypealiaserror")
|
|
syn match vim9TypeAliasError contained "\<\l\w*\>" skipwhite nextgroup=vim9TypeEquals
|
|
endif
|
|
endif
|
|
|
|
" Blocks: {{{2
|
|
" ======
|
|
syn region vim9Block contained
|
|
\ matchgroup=vimSep
|
|
\ start="{\ze\s*\%($\|[#|]\)"
|
|
\ end="^\s*\zs}"
|
|
\ end="\%(\\\@<!|\s*\)\=\zs}"
|
|
\ skipwhite nextgroup=vim9Comment,vimCmdSep
|
|
\ contains=@vimDefBodyList
|
|
|
|
" Special Filenames, Modifiers, Extension Removal: {{{2
|
|
" ===============================================
|
|
syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod
|
|
syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod
|
|
syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod
|
|
syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod
|
|
syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod
|
|
syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod
|
|
syn match vimSpecFileMod "\(:[phtre]\)\+" contained
|
|
|
|
syn match vimSpecFile contained "%[ \t:]"me=e-1 nextgroup=vimSpecFileMod
|
|
syn match vimSpecFile contained excludenl "%$" nextgroup=vimSpecFileMod
|
|
syn match vimSpecFile contained "%<"me=e-1 nextgroup=vimSpecFileMod
|
|
|
|
" Lower Priority Comments: after some vim commands... {{{2
|
|
" =======================
|
|
if get(g:, "vimsyn_comment_strings", 1)
|
|
VimExtend syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
|
|
endif
|
|
|
|
if s:vim9script
|
|
syn cluster vimComment contains=vim9Comment
|
|
else
|
|
syn cluster vimComment contains=vimComment
|
|
endif
|
|
|
|
VimExtend VimL syn region vimComment
|
|
\ excludenl
|
|
\ start=+"+
|
|
\ skip=+\n\s*\%(\\\|"\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimCommentGroup,vimCommentString
|
|
VimExtend Vim9 syn region vim9Comment
|
|
\ excludenl
|
|
\ start="\%#=1\s\@1<=#\%({\@!\|{{\)"
|
|
\ skip="\n\s*\%(\\\|#\\ \)"
|
|
\ end="$"
|
|
\ contains=@vimCommentGroup,vimCommentString
|
|
|
|
syn match vim9CommentError contained "#.*"
|
|
syn match vimCommentError contained +".*+
|
|
|
|
" Environment Variables: {{{2
|
|
" =====================
|
|
syn match vimEnvvar "\$\I\i*"
|
|
syn match vimEnvvar "\${\I\i*}"
|
|
|
|
" Strings {{{2
|
|
" =======
|
|
|
|
" In-String Specials:
|
|
" Try to catch strings, if nothing else matches (therefore it must precede the others!)
|
|
" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
|
|
" syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
|
|
syn match vimPatSepErr contained "\\)"
|
|
syn match vimPatSep contained "\\|"
|
|
syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
|
|
syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
|
|
syn match vimNotPatSep contained "\\\\"
|
|
syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
|
|
VimExtend syn region vimString oneline keepend matchgroup=vimString start=+[^a-zA-Z\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ nextgroup=vimSubscriptBrackets contains=@vimStringGroup
|
|
VimExtend syn region vimString oneline matchgroup=vimString start=+[^a-zA-Z\\@]'+lc=1 end=+'+ nextgroup=vimSubscriptBrackets contains=vimQuoteEscape
|
|
"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
|
|
|
|
syn match vimEscape contained "\\."
|
|
" syn match vimEscape contained +\\[befnrt\"]+
|
|
syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
|
|
syn match vimEscape contained "\\<" contains=vimNotation
|
|
syn match vimEscape contained "\\<\*[^>]*>\=>"
|
|
syn match vimQuoteEscape contained "''"
|
|
|
|
VimExtend syn region vimString oneline matchgroup=vimString start=+$'+ end=+'+ nextgroup=vimSubscriptBrackets contains=@vimStringInterpolation,vimQuoteEscape
|
|
VimExtend syn region vimString oneline matchgroup=vimString start=+$"+ end=+"+ nextgroup=vimSubscriptBrackets contains=@vimStringInterpolation,@vimStringGroup
|
|
syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
|
|
syn match vimStringInterpolationBrace contained "{{"
|
|
syn match vimStringInterpolationBrace contained "}}"
|
|
syn cluster vimStringInterpolation contains=vimStringInterpolationExpr,vimStringInterpolationBrace
|
|
|
|
syn region vimContinueString contained matchgroup=vimContinueString start=+"+ skip=+\n\s*\%(\\\|["#]\\ \)+ end=+"+ end="$" skipwhite nextgroup=vimSubscriptBrackets,vimComment,vimOper contains=@vimContinue,@vimStringGroup
|
|
syn region vimContinueString contained matchgroup=vimContinueString start=+'+ skip=+\n\s*\%(\\\|["#]\\ \)+ end=+'+ end="$" skipwhite nextgroup=vimSubscriptBrackets,vimComment,vimOper contains=@vimContinue,vimQuoteEscape
|
|
syn region vimContinueString contained matchgroup=vimContinueString start=+$"+ skip=+\n\s*\%(\\\|["#]\\ \)+ end=+"+ end="$" skipwhite nextgroup=vimSubscriptBrackets,vimComment,vimOper contains=@vimContinue,@vimStringInterpolation,@vimStringGroup
|
|
syn region vimContinueString contained matchgroup=vimContinueString start=+$'+ skip=+\n\s*\%(\\\|["#]\\ \)+ end=+'+ end="$" skipwhite nextgroup=vimSubscriptBrackets,vimComment,vimOper contains=@vimContinue,@vimStringInterpolation,vimQuoteEscape
|
|
|
|
" Registers, Addresses, Filters: {{{2
|
|
syn match vimLetRegister contained '@["@0-9\-a-zA-Z:.%#=*+~_/]'
|
|
|
|
" TODO: match this as a contained ex command
|
|
syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
|
|
syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
|
|
syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
|
|
|
|
" Variable Declarations: {{{2
|
|
" =====================
|
|
VimL syn keyword vimLet contained let skipwhite nextgroup=@vimSpecialVar,vimVar,vimVarList,vimLetVar
|
|
VimL syn keyword vimConst contained cons[t] skipwhite nextgroup=@vimSpecialVar,vimVar,vimVarList,vimLetVar
|
|
syn region vimVarList contained
|
|
\ start="\[" end="]"
|
|
\ skipwhite nextgroup=vimLetHeredoc
|
|
\ contains=@vimContinue,@vimSpecialVar,vimVar
|
|
syn match vimLetVar contained "\<\%([bwglstav]:\)\=\h[a-zA-Z0-9#_]*\>\ze\%(\[.*]\)\=\s*=<<" skipwhite nextgroup=vimLetVarSubscript,vimLetHeredoc contains=vimVarScope,vimSubscriptBrackets
|
|
|
|
syn region vimLetVarSubscript contained
|
|
\ matchgroup=vimSubscriptBracket
|
|
\ start="\S\@1<=\["
|
|
\ end="]"
|
|
\ skipwhite nextgroup=vimLetVarSubscript,vimLetHeredoc
|
|
\ contains=@vimExprList
|
|
|
|
syn keyword vimUnlet contained unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
|
|
syn match vimUnletBang contained "\a\@1<=!" skipwhite nextgroup=vimUnletVars
|
|
syn region vimUnletVars contained
|
|
\ start="$\I\|\h" skip=+\n\s*\%(\\\|["#]\\ \)\|^\s*["#]\\ + end="$" end=+\ze\s*[|"#]+
|
|
\ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
|
|
\ contains=@vimContinue,vimEnvvar,vimVar,vimVimVar
|
|
|
|
" TODO: type error after register or environment variables (strings)
|
|
VimExtend VimFoldh syn region vimLetHeredoc contained
|
|
\ matchgroup=vimLetHeredocStart
|
|
\ start="\%(^\z(\s*\)\S.*\)\@<==<<\s*trim\%(\s\+\)\@>\z(\L\S*\)"
|
|
\ matchgroup=vimLetHeredocStop
|
|
\ end="^\z1\=\z2$"
|
|
VimExtend VimFoldh syn region vimLetHeredoc contained
|
|
\ matchgroup=vimLetHeredocStart
|
|
\ start="=<<\%(\s*\)\@>\z(\L\S*\)"
|
|
\ matchgroup=vimLetHeredocStop end="^\z1$"
|
|
VimExtend VimFoldh syn region vimLetHeredoc contained
|
|
\ matchgroup=vimLetHeredocStart
|
|
\ start="\%(^\z(\s*\)\S.*\)\@<==<<\s*\%(trim\s\+eval\|eval\s\+trim\)\%(\s\+\)\@>\z(\L\S*\)"
|
|
\ matchgroup=vimLetHeredocStop
|
|
\ end="^\z1\=\z2$"
|
|
\ contains=@vimStringInterpolation
|
|
VimExtend VimFoldh syn region vimLetHeredoc contained
|
|
\ matchgroup=vimLetHeredocStart
|
|
\ start="=<<\s*eval\%(\s\+\)\@>\z(\L\S*\)"
|
|
\ matchgroup=vimLetHeredocStop
|
|
\ end="^\z1$"
|
|
\ contains=@vimStringInterpolation
|
|
|
|
Vim9 syn keyword vim9Const contained const skipwhite nextgroup=vim9Variable,vim9VariableList
|
|
Vim9 syn keyword vim9Final contained final skipwhite nextgroup=vim9Variable,vim9VariableList
|
|
Vim9 syn keyword vim9Var contained var skipwhite nextgroup=vim9Variable,vim9VariableList
|
|
|
|
syn match vim9Variable contained "\<\h\w*\>" skipwhite nextgroup=vim9VariableTypeSep,vimLetHeredoc,vimOper
|
|
syn region vim9VariableList contained start="\[" end="]" contains=@vimContinue,@vimSpecialVar,vim9Variable skipwhite nextgroup=vimLetHeredoc
|
|
|
|
syn match vim9VariableTypeSep contained "\S\@1<=:\%(\s\|\n\)\@=" skipwhite nextgroup=@vim9VariableType
|
|
syn keyword vim9VariableType contained blob bool channel float job number string void skipwhite nextgroup=vimLetHeredoc
|
|
syn keyword vim9VariableTypeAny contained any skipwhite nextgroup=vimLetHeredoc
|
|
syn match vim9VariableTypeObject contained "\<object<\@=" nextgroup=vim9VariableTypeObjectArgs
|
|
syn region vim9VariableTypeObjectArgs contained
|
|
\ matchgroup=vim9VariableTypeObjectBracket
|
|
\ start="<"
|
|
\ end=">"
|
|
\ contains=vimTypeAny,vimTypeObject,vimUserType
|
|
\ oneline
|
|
\ transparent
|
|
syn match vim9VariableType contained "\<\%(func\)\>" skipwhite nextgroup=vimLetHeredoc
|
|
syn region vim9VariableCompoundType contained
|
|
\ matchgroup=vim9VariableType
|
|
\ start="\<func("
|
|
\ end=")"
|
|
\ skipwhite nextgroup=vim9VariableTypeSep,vimLetHeredoc
|
|
\ contains=@vim9Continue,@vim9VariableType
|
|
\ transparent
|
|
syn region vim9VariableCompoundType contained
|
|
\ matchgroup=vim9VariableType
|
|
\ start="\<tuple<"
|
|
\ end=">"
|
|
\ skipwhite nextgroup=vimLetHeredoc
|
|
\ contains=@vim9Continue,@vim9VariableType
|
|
\ transparent
|
|
syn region vim9VariableCompoundType contained
|
|
\ matchgroup=vim9VariableType
|
|
\ start="\<\%(list\|dict\)<"
|
|
\ end=">"
|
|
\ skipwhite nextgroup=vimLetHeredoc
|
|
\ contains=@vim9VariableType
|
|
\ oneline
|
|
\ transparent
|
|
syn match vim9VariableUserType contained "\<\%(\h\w*\.\)*\u\w*\>" skipwhite nextgroup=vimLetHeredoc
|
|
|
|
syn cluster vim9VariableType contains=vim9VariableType,vim9VariableTypeAny,vim9VariableTypeObject,vim9VariableCompoundType,vim9VariableUserType
|
|
|
|
" Filename Patterns: {{{2
|
|
" =================
|
|
|
|
syn match vimWildcardQuestion contained "?"
|
|
syn match vimWildcardStar contained "*"
|
|
|
|
syn match vimWildcardBraceComma contained ","
|
|
syn region vimWildcardBrace contained
|
|
\ matchgroup=vimWildcard
|
|
\ start="{"
|
|
\ end="}"
|
|
\ contains=vimWildcardEscape,vimWildcardBrace,vimWildcardBraceComma,vimWildcardQuestion,vimWildcardStar,vimWildcardBracket
|
|
\ oneline
|
|
|
|
syn match vimWildcardIntervalNumber contained "\d\+"
|
|
syn match vimWildcardInterval contained "\\\\\\{\d\+\%(,\d\+\)\=\\}" contains=vimWildcardIntervalNumber
|
|
|
|
|
|
syn match vimWildcardBracket contained "\[\%(\^\=]\=\%(\\.\|\[\([:.=]\)[^:.=]\+\1]\|[^][:space:]]\)*\)\@>]"
|
|
\ contains=vimWildcardBracketStart,vimWildcardEscape
|
|
|
|
syn match vimWildcardBracketCharacter contained "." nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketHyphen,vimWildcardBracketEnd
|
|
syn match vimWildcardBracketRightBracket contained "]" nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketEnd
|
|
syn match vimWildcardBracketHyphen contained "-]\@!" nextgroup=@vimWildcardBracketCharacter
|
|
syn match vimWildcardBracketEscape contained "\\." nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketHyphen,vimWildcardBracketEnd
|
|
syn match vimWildcardBracketCharacterClass contained "\[:[^:]\+:]" nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketEnd
|
|
syn match vimWildcardBracketEquivalenceClass contained "\[=[^=]\+=]" nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketEnd
|
|
syn match vimWildcardBracketCollatingSymbol contained "\[\.[^.]\+\.]" nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketEnd
|
|
|
|
syn match vimWildcardBracketStart contained "\[" nextgroup=vimWildcardBracketCaret,vimWildcardBracketRightBracket,@vimWildcardBracketCharacter
|
|
syn match vimWildcardBracketCaret contained "\^" nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketRightBracket
|
|
syn match vimWildcardBracketEnd contained "]"
|
|
|
|
syn cluster vimWildcardBracketCharacter contains=vimWildcardBracketCharacter,vimWildcardBracketEscape,vimWildcardBracketCharacterClass,vimWildcardBracketEquivalenceClass,vimWildcardBracketCollatingSymbol
|
|
|
|
syn match vimWildcardEscape contained "\\."
|
|
|
|
syn cluster vimWildcard contains=vimWildcardQuestion,vimWildcardStar,vimWildcardBrace,vimWildcardBracket,vimWildcardInterval
|
|
|
|
" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
|
|
" ======================
|
|
syn case ignore
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}x\=\%(f\d\{1,2}\|[^ \t:]\|space\|bar\|bslash\|nl\|newline\|lf\|linefeed\|cr\|retu\%[rn]\|enter\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|csi\|right\|paste\%(start\|end\)\|left\|help\|undo\|k\=insert\|ins\|mouse\|[kz]\=home\|[kz]\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\%(page\)\=\%(\|down\|up\|k\d\>\)\)>" contains=vimBracket
|
|
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
|
|
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
|
|
" syn match vimNotation contained '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
|
|
syn match vimNotation contained '\%#=1\%(\\\|<lt>\)\=<\%([fq]-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|lt\)>' contains=vimBracket skipwhite nextgroup=vimSubst
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
|
|
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
|
|
|
|
syn match vimBracket contained "[\\<>]"
|
|
syn case match
|
|
|
|
" User Command Highlighting: {{{2
|
|
" Note: assumes command runs to EOL, no explicit | support
|
|
|
|
syn match vimUsrCmd contained '\%#=1\<\u[[:alnum:]]*\%([![:blank:]]\|$\)\@=' skipwhite nextgroup=vimUsrCmdBang,vimUsrCmdArgs
|
|
syn match vimUsrCmd_ contained '\%#=1\%(\%(N\%[ext]\|P\%[rint]\|X\)\>\)\@!\u[[:alnum:]]*\%([![:blank:]]\|$\)\@=' skipwhite nextgroup=vimUsrCmdBang,vimUsrCmdArgs
|
|
syn match vimUsrCmdBang contained "\w\@1<=!" skipwhite nextgroup=vimUsrCmdArgs
|
|
syn region vimUsrCmdArgs contained
|
|
\ start="\s\zs\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimContinue
|
|
|
|
" Vim user commands
|
|
|
|
" Compiler plugins
|
|
syn keyword vimCompilerSet contained CompilerSet skipwhite nextgroup=vimSetArgs
|
|
|
|
" runtime/makemenu.vim
|
|
syn keyword vimSynMenu contained SynMenu skipwhite nextgroup=vimSynMenuPath
|
|
syn match vimSynMenuPath contained ".*\ze:" nextgroup=vimSynMenuColon contains=vimMenuNotation
|
|
syn match vimSynMenuColon contained ":" nextgroup=vimSynMenuName
|
|
syn match vimSynMenuName contained "\w\+"
|
|
|
|
" runtime/syntax/syncolor.vim
|
|
syn keyword vimSynColor contained SynColor skipwhite nextgroup=vimSynColorGroup
|
|
syn match vimSynColorGroup contained "\<\h\w*\>" skipwhite nextgroup=vimHiKeyList contains=vimGroup
|
|
syn keyword vimSynLink contained SynLink skipwhite nextgroup=vimSynLinkGroup
|
|
syn match vimSynLinkGroup contained "\<\h\w*\>" skipwhite nextgroup=vimGroup contains=vimGroup
|
|
|
|
" runtime/syntax/vim.vim
|
|
syn keyword vimVim9 contained Vim9 skipwhite nextgroup=@vimExUserCmdList,vimSyntax
|
|
syn keyword vimVimL contained VimL skipwhite nextgroup=@vimExUserCmdList,vimSyntax
|
|
syn keyword vimVimExtend contained VimExtend skipwhite nextgroup=@vimExUserCmdList,vimSyntax
|
|
syn match vimVimFold contained "\<VimFold\a\>" skipwhite nextgroup=@vimExUserCmdList,vimSyntax
|
|
|
|
syn cluster vimExUserCmdList contains=vimCompilerSet,vimSynColor,vimSynLink,vimSynMenu,vimVimExtend,vimVimFold,vimVim9,vimVimL
|
|
|
|
" Errors And Warnings: {{{2
|
|
" ====================
|
|
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
|
|
syn match vimFunctionError contained "[[:space:]!]\@1<=\<[a-z0-9]\w\{-}\ze\s*("
|
|
syn match vimFunctionError contained "\%(<[sS][iI][dD]>\|[sg]:\)\d\w\{-}\ze\s*("
|
|
syn match vimElseIfErr "\<else\s\+if\>"
|
|
syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
|
|
endif
|
|
|
|
" Control Characters: {{{2
|
|
" ==================
|
|
syn match vimCtrlChar "[--]"
|
|
|
|
" Embedded Scripts: {{{2
|
|
" ================
|
|
" perl,ruby : Benoit Cerrina
|
|
" python,tcl : Johannes Zellner
|
|
" mzscheme, lua : Charles Campbell
|
|
|
|
" Allows users to specify the type of embedded script highlighting
|
|
" they want: (lua/mzscheme/perl/python/ruby/tcl support)
|
|
" g:vimsyn_embed == 0 : don't embed any scripts
|
|
" g:vimsyn_embed =~# 'l' : embed Lua
|
|
" g:vimsyn_embed =~# 'm' : embed MzScheme
|
|
" g:vimsyn_embed =~# 'p' : embed Perl
|
|
" g:vimsyn_embed =~# 'P' : embed Python
|
|
" g:vimsyn_embed =~# 'r' : embed Ruby
|
|
" g:vimsyn_embed =~# 't' : embed Tcl
|
|
|
|
let s:interfaces = get(g:, "vimsyn_embed", "lP")
|
|
|
|
" [-- lua --] {{{3
|
|
if s:interfaces =~# 'l'
|
|
syn include @vimLuaScript syntax/lua.vim
|
|
unlet b:current_syntax
|
|
endif
|
|
|
|
syn keyword vimLua contained lua skipwhite nextgroup=vimLuaHeredoc,vimLuaStatement
|
|
syn keyword vimLua contained luado skipwhite nextgroup=vimLuaStatement
|
|
syn keyword vimLua contained luafile
|
|
syn match vimLua_ contained "lua\>" skipwhite nextgroup=vimLuaHeredoc,vimLuaStatement
|
|
syn match vimLua_ contained "luado\>" skipwhite nextgroup=vimLuaStatement
|
|
syn match vimLua_ contained "luafile\>"
|
|
|
|
syn region vimLuaStatement contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimLuaScript,@vimContinue
|
|
VimFoldl syn region vimLuaHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\s*\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1$+
|
|
\ contains=@vimLuaScript
|
|
VimFoldl syn region vimLuaHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\.$+
|
|
\ contains=@vimLuaScript
|
|
VimFoldl syn region vimLuaHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\z2$+
|
|
\ contains=@vimLuaScript
|
|
VimFoldl syn region vimLuaHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\.$+
|
|
\ contains=@vimLuaScript
|
|
|
|
" [-- mzscheme --] {{{3
|
|
if s:interfaces =~# 'm'
|
|
let s:iskKeep = &l:isk
|
|
syn include @vimMzSchemeScript syntax/scheme.vim
|
|
unlet b:current_syntax
|
|
let &l:isk = s:iskKeep
|
|
endif
|
|
|
|
syn keyword vimMzScheme contained mz[scheme] skipwhite nextgroup=vimMzSchemeHeredoc,vimMzSchemeStatement
|
|
syn keyword vimMzScheme contained mzf[ile]
|
|
syn match vimMzScheme_ contained "mz\%[scheme]\>" skipwhite nextgroup=vimMzSchemeHeredoc,vimMzSchemeStatement
|
|
syn match vimMzScheme_ contained "mzf\%[ile]\>"
|
|
|
|
syn region vimMzSchemeStatement contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimMzSchemeScript,@vimContinue
|
|
VimFoldm syn region vimMzSchemeHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\s*\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1$+
|
|
\ contains=@vimMzSchemeScript
|
|
VimFoldm syn region vimMzSchemeHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\.$+
|
|
\ contains=@vimMzSchemeScript
|
|
VimFoldm syn region vimMzSchemeHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\z2$+
|
|
\ contains=@vimMzSchemeScript
|
|
VimFoldm syn region vimMzSchemeHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\.$+
|
|
\ contains=@vimMzSchemeScript
|
|
|
|
" [-- perl --] {{{3
|
|
if s:interfaces =~# 'p'
|
|
syn include @vimPerlScript syntax/perl.vim
|
|
unlet b:current_syntax
|
|
endif
|
|
|
|
syn keyword vimPerl contained pe[rl] skipwhite nextgroup=vimPerlHeredoc,vimPerlStatement
|
|
syn keyword vimPerl contained perld[o] skipwhite nextgroup=vimPerlStatement
|
|
syn match vimPerl_ contained "pe\%[rl]\>" skipwhite nextgroup=vimPerlHeredoc,vimPerlStatement
|
|
syn match vimPerl_ contained "perld\%[o]\>" skipwhite nextgroup=vimPerlStatement
|
|
|
|
syn region vimPerlStatement contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimPerlScript,@vimContinue
|
|
VimFoldp syn region vimPerlHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\s*\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1$+ contains=@vimPerlScript
|
|
VimFoldp syn region vimPerlHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\ze\s*$+ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\.$+
|
|
\ contains=@vimPerlScript
|
|
VimFoldp syn region vimPerlHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\z2$+
|
|
\ contains=@vimPerlScript
|
|
VimFoldp syn region vimPerlHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\.$+
|
|
\ contains=@vimPerlScript
|
|
|
|
" [-- python --] {{{3
|
|
if s:interfaces =~# 'P'
|
|
syn include @vimPythonScript syntax/python2.vim
|
|
unlet b:current_syntax
|
|
endif
|
|
|
|
syn keyword vimPython contained py[thon] skipwhite nextgroup=vimPythonHeredoc,vimPythonStatement
|
|
syn keyword vimPython contained pydo skipwhite nextgroup=vimPythonStatement
|
|
syn keyword vimPython contained pyfile
|
|
syn match vimPython__ contained "py\%[thon]\>" skipwhite nextgroup=vimPythonHeredoc,vimPythonStatement
|
|
syn match vimPython__ contained "pydo\>" skipwhite nextgroup=vimPythonStatement
|
|
syn match vimPython__ contained "pyfile\>"
|
|
|
|
syn region vimPythonStatement contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimPythonScript,@vimContinue
|
|
VimFoldP syn region vimPythonHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\s*\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1$+
|
|
\ contains=@vimPythonScript
|
|
VimFoldP syn region vimPythonHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\.$+
|
|
\ contains=@vimPythonScript
|
|
VimFoldP syn region vimPythonHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\z2$+
|
|
\ contains=@vimPythonScript
|
|
VimFoldP syn region vimPythonHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\.$+
|
|
\ contains=@vimPythonScript
|
|
|
|
" [-- python3 --] {{{3
|
|
if s:interfaces =~# 'P'
|
|
syn include @vimPython3Script syntax/python.vim
|
|
unlet b:current_syntax
|
|
endif
|
|
|
|
syn keyword vimPython3 contained python3 py3 skipwhite nextgroup=vimPython3Heredoc,vimPython3Statement
|
|
syn keyword vimPython3 contained py3do skipwhite nextgroup=vimPython3Statement
|
|
syn keyword vimPython3 contained py3file
|
|
syn match vimPython3__ contained "python3\>" skipwhite nextgroup=vimPython3Heredoc,vimPython3Statement
|
|
syn match vimPython3__ contained "py3\>" skipwhite nextgroup=vimPython3Heredoc,vimPython3Statement
|
|
syn match vimPython3__ contained "py3do\>" skipwhite nextgroup=vimPython3Statement
|
|
syn match vimPython3__ contained "py3file\>"
|
|
|
|
syn region vimPython3Statement contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimPython3Script,@vimContinue
|
|
VimFoldP syn region vimPython3Heredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\s*\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1$+
|
|
\ contains=@vimPython3Script
|
|
VimFoldP syn region vimPython3Heredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\.$+
|
|
\ contains=@vimPython3Script
|
|
VimFoldP syn region vimPython3Heredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\z2$+
|
|
\ contains=@vimPython3Script
|
|
VimFoldP syn region vimPython3Heredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\.$+
|
|
\ contains=@vimPython3Script
|
|
|
|
" [-- pythonx --] {{{3
|
|
if s:interfaces =~# 'P'
|
|
if &pyxversion == 2
|
|
syn cluster vimPythonXScript contains=@vimPythonScript
|
|
else
|
|
syn cluster vimPythonXScript contains=@vimPython3Script
|
|
endif
|
|
endif
|
|
|
|
syn keyword vimPythonX contained pythonx pyx skipwhite nextgroup=vimPythonXHeredoc,vimPythonXStatement
|
|
syn keyword vimPythonX contained pyxdo skipwhite nextgroup=vimPythonXStatement
|
|
syn keyword vimPythonX contained pyxfile
|
|
syn match vimPythonX__ contained "pythonx\>" skipwhite nextgroup=vimPythonXHeredoc,vimPythonXStatement
|
|
syn match vimPythonX__ contained "pyx\>" skipwhite nextgroup=vimPythonXHeredoc,vimPythonXStatement
|
|
syn match vimPythonX__ contained "pyxdo\>" skipwhite nextgroup=vimPythonXStatement
|
|
syn match vimPythonX__ contained "pyxfile\>"
|
|
|
|
syn region vimPythonXStatement contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimPythonXScript,@vimContinue
|
|
VimFoldP syn region vimPythonXHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\s*\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1$+
|
|
\ contains=@vimPythonXScript
|
|
VimFoldP syn region vimPythonXHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\.$+
|
|
\ contains=@vimPythonXScript
|
|
VimFoldP syn region vimPythonXHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\z2$+
|
|
\ contains=@vimPythonXScript
|
|
VimFoldP syn region vimPythonXHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\.$+
|
|
\ contains=@vimPythonXScript
|
|
|
|
" [-- ruby --] {{{3
|
|
if s:interfaces =~# 'r'
|
|
syn include @vimRubyScript syntax/ruby.vim
|
|
unlet b:current_syntax
|
|
endif
|
|
|
|
syn keyword vimRuby contained rub[y] skipwhite nextgroup=vimRubyHeredoc,vimRubyStatement
|
|
syn keyword vimRuby contained rubyd[o] skipwhite nextgroup=vimRubyStatement
|
|
syn keyword vimRuby contained rubyf[ile]
|
|
syn match vimRuby_ contained "rub[y]\=\>" skipwhite nextgroup=vimRubyHeredoc,vimRubyStatement
|
|
syn match vimRuby_ contained "rubydo\=\>" skipwhite nextgroup=vimRubyStatement
|
|
syn match vimRuby_ contained "rubyf\%[ile]\>"
|
|
|
|
syn region vimRubyStatement contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimRubyScript,@vimContinue
|
|
VimFoldr syn region vimRubyHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\s*\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1$+
|
|
\ contains=@vimRubyScript
|
|
VimFoldr syn region vimRubyHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\ze\s*$+ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\.$+
|
|
\ contains=@vimRubyScript
|
|
VimFoldr syn region vimRubyHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\z2$+
|
|
\ contains=@vimRubyScript
|
|
VimFoldr syn region vimRubyHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\.$+
|
|
\ contains=@vimRubyScript
|
|
|
|
" [-- tcl --] {{{3
|
|
if s:interfaces =~# 't'
|
|
syn include @vimTclScript syntax/tcl.vim
|
|
unlet b:current_syntax
|
|
endif
|
|
|
|
syn keyword vimTcl contained tcl skipwhite nextgroup=vimTclHeredoc,vimTclStatement
|
|
syn keyword vimTcl contained tcld[o] skipwhite nextgroup=vimTclStatement
|
|
syn keyword vimTcl contained tclf[ile]
|
|
syn match vimTcl_ contained "tcl\>" skipwhite nextgroup=vimTclHeredoc,vimTclStatement
|
|
syn match vimTcl_ contained "tcld\%[o]\>" skipwhite nextgroup=vimTclStatement
|
|
syn match vimTcl_ contained "tclf\%[ile]\>"
|
|
syn region vimTclStatement contained
|
|
\ start="\S"
|
|
\ skip=+\n\s*\%(\\\|["#]\\ \)+
|
|
\ end="$"
|
|
\ contains=@vimTclScript,@vimContinue
|
|
VimFoldt syn region vimTclHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\s*\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1$+
|
|
\ contains=@vimTclScript
|
|
VimFoldt syn region vimTclHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+<<\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\.$+
|
|
\ contains=@vimTclScript
|
|
VimFoldt syn region vimTclHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\z2$+
|
|
\ contains=@vimTclScript
|
|
VimFoldt syn region vimTclHeredoc contained
|
|
\ matchgroup=vimScriptHeredocStart
|
|
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
|
|
\ matchgroup=vimScriptHeredocStop
|
|
\ end=+^\z1\=\.$+
|
|
\ contains=@vimTclScript
|
|
|
|
unlet s:interfaces
|
|
" Beginners - Patterns that involve ^ {{{2
|
|
" =========
|
|
syn cluster vimCommand_ contains=vimCommand_,vim\u\w\+_
|
|
|
|
VimExtend Vim9 syn region vim9LineComment contained start=+\%#=1#\%({\@!\|{{\).*$+ skip=+\n\s*\%(\\\|#\\ \)+ end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
|
|
VimExtend VimL syn region vimLineComment contained start=+".*$+ skip=+\n\s*\%(\\\|"\\ \)+ end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
|
|
|
|
syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
|
|
syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\%([A-DF-Z]\w*\|E\%(\d\{1,4}\>\)\@!\w*\)\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
|
|
|
|
syn match vimContinue "^\s*\zs\\" contains=vimLeadingWhitespace "skipwhite nextgroup=vimCmdSep
|
|
VimExtend syn match vimContinueComment '^\s*\zs["#]\\ .*' contains=vimLeadingWhitespace
|
|
VimExtend syn match vim9ContinueComment "^\s*\zs#\\ .*" contains=vimLeadingWhitespace
|
|
syn cluster vimContinue contains=vimContinue,vimContinueComment
|
|
syn cluster vim9Continue contains=vimContinue,vim9ContinueComment
|
|
|
|
syn region vimString start='^\s*\\"' end='"' oneline keepend contains=@vimStringGroup,vimContinue
|
|
syn region vimString start="^\s*\\'" end="'" oneline keepend contains=vimQuoteEscape,vimContinue
|
|
|
|
syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
|
|
syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
|
|
|
|
" TODO: remove Vim9 prefix command, nextgroup after SOL etc.
|
|
" : parameterize patterns with no nextgroup
|
|
Vim9 syn match vim9LhsVariable contained transparent "\s\=\%([bwgstv]:\|&\%([lg]:\)\=\|\$\)\=\h[a-zA-Z0-9#_]*\ze\s\+[-+/*%]\==\%(\s\|$\)" contains=vimVar,vimVarScope,@vimSpecialVar,vimEnvvar
|
|
Vim9 syn match vim9LhsVariable contained transparent "\s\=\%([bwgstv]:\|&\%([lg]:\)\=\|\$\)\=\h[a-zA-Z0-9#_]*\ze\s\+\.\.=\%(\s\|$\)" contains=vimVar,vimVarScope,@vimSpecialVar,vimEnvvar
|
|
Vim9 syn match vim9LhsVariable contained transparent "\s\=\%([bwgstv]:\|&\%([lg]:\)\=\|\$\)\=\h[a-zA-Z0-9#_]*\ze\s\+=<<" skipwhite nextgroup=vimLetHeredoc contains=vimVar,vimVarScope,@vimSpecialVar,vimEnvvar
|
|
Vim9 syn match vim9LhsVariable contained transparent "\s\=\%([bwgstv]:\|&\%([lg]:\)\=\|\$\)\=\h[a-zA-Z0-9#_]*\ze\s*->" contains=vimVar,vimVarScope,@vimSpecialVar,vimEnvvar,vim9Super,vim9This
|
|
Vim9 syn match vim9LhsVariable contained transparent "\s\=\%([bwgstv]:\|&\%([lg]:\)\=\|\$\)\=\h[a-zA-Z0-9#_]*\ze\[" nextgroup=vimSubscriptBrackets contains=vimVar,vimVarScope,@vimSpecialVar,vimEnvvar
|
|
" TODO: remove these in favour of funccall handling?
|
|
Vim9 syn match vim9LhsVariable contained transparent "\s\=\%([bwgtv]:\|&\%([lg]:\)\=\|\$\)\=\h[a-zA-Z0-9#_]*\ze\." nextgroup=vimSubscriptDot contains=vimVar,vimVarScope,@vimSpecialVar,vimEnvvar,vim9Super,vim9This
|
|
|
|
Vim9 syn match vim9LhsVariableList contained "\[\_[^]]\+]\ze\s\+[-+/*%]\==" contains=vimVar,@vimSpecialVar
|
|
Vim9 syn match vim9LhsVariableList contained "\[\_[^]]\+]\ze\s\+=<<" skipwhite nextgroup=vimLetHeredoc contains=vimVar,@vimSpecialVar
|
|
Vim9 syn match vim9LhsVariableList contained "\[\_[^]]\+]\ze\s\+\.\.=" contains=vimVar,@vimSpecialVar
|
|
|
|
Vim9 syn match vim9LhsRegister contained "@["0-9\-a-zA-Z#=*+_/]\ze\s\+\%(\.\.\)\=="
|
|
|
|
syn cluster vim9Lhs contains=vim9Lhs.*
|
|
|
|
" TODO: Useless expressions like "string" at SOL?
|
|
" : Continue shouldn't be included here.
|
|
VimL syn match vimLineStart "^" skipwhite nextgroup=vimCmdStart,@vimRange,@vimCmdList,@vimContinue,vimComment,vimLineComment
|
|
" FIXME: continued expressions
|
|
Vim9 syn match vim9LineStart "^" skipwhite nextgroup=vimCmdStart,@vimCmdList,@vim9Continue,vimCmdSep,vim9Comment,vim9LineComment,vim9Block,vim9Lhs.*,@vim9Func ,vimOperParen,vimOper,vim9Boolean,vim9Null,vimNumber,vimString
|
|
|
|
syn match vimCmdSep "\\\@1<!|\%(\%(\s*\n\s*["#]\\ .*\)*\s*\n\s*\\\)\=" skipwhite nextgroup=vimCmdStart,@vimRange,@vimCmdList,@vimFunc,@vim9Func,vim9Block,vim9Lhs.* contains=@vimCmdSepContinue
|
|
syn match vimCmdSep contained "|\%(\%(\s*\n\s*["#]\\ .*\)*\s*\n\s*\\\)\=" skipwhite nextgroup=vimCmdStart,@vimRange,@vimCmdList,@vimFunc,@vim9Func,vim9Block,vim9Lhs.* contains=@vimCmdSepContinue
|
|
|
|
syn match vimCmdSepContinue contained "^\s*\\" skipwhite skipnl nextgroup=@vimCmdSepContinue,vimCmdStart,@vimRange,@vimCmdList contains=vimLeadingWhitespace
|
|
syn match vimCmdSepContinueComment contained '^\s*["#]\\ .*' skipwhite skipnl nextgroup=@vimCmdSepContinue contains=vimLeadingWhitespace
|
|
syn cluster vimCmdSepContinue contains=vimCmdSepContinue,vimCmdSepContinueComment
|
|
|
|
" TODO: fix priority, not trailing bar
|
|
syn match vimOper "||" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
|
|
|
|
" prevent variable statements at the start of a line matching as a :command
|
|
" NOTE: needs to consume leading whitespace, to prevent skip* matching it
|
|
" TODO: extend to foo.bar.baz += 99 qualified names? Slower but more generalized
|
|
Vim9 syn match vim9LhsVariable_ "^\s*\h\w*\ze[[.]" nextgroup=vimSubscriptBrackets,vimSubscriptDot contains=vimVar,vim9Super,vim9This,vimWhitespace
|
|
Vim9 syn match vim9LhsVariable_ "^\s*\h\w*\ze\s\+\%([-+/*%]\==\|\.\.=\)\%(\s\|$\)" contains=vimVar,vim9Super,vim9This,vimWhitespace
|
|
Vim9 syn match vim9LhsVariable_ "^\s*\h\w*\ze\s*\->" contains=vimVar,vim9Super,vim9This,vimWhitespace
|
|
Vim9 syn match vim9LhsVariable_ "^\s*\h\w*\ze\s\+=<<" skipwhite nextgroup=vimLetHeredoc contains=vimVar,vim9Super,vim9This,vimWhitespace
|
|
" rename vim9LhsFunctionCall?
|
|
Vim9 syn match vim9UserFunc "^\s*\%([sgbwtv]:\|<[sS][iI][dD]>\)\=\h\w*\ze[(<]" skipwhite nextgroup=vimOperParen,vim9TypeArgs contains=vimVarScope,vimNotation,vim9MethodName,vim9Super,vim9This,vimWhitespace
|
|
Vim9 syn match vim9UserFunc "^\s*\%(g:\)\=\%(\h\w*#\)\+\h\w*\ze[(<]" skipwhite nextgroup=vimOperParen contains=vimVarScope,vimWhitespace
|
|
Vim9 syn match vim9Func "^\s*\l\w*\ze(" skipwhite nextgroup=vimOperParen contains=vimFuncName,vimWhitespace
|
|
|
|
Vim9 syn match vim9Wincmd contained "\s\=\<winc\%[md]\>\ze\s\+=\s*\%([#|]\|$\)" skipwhite nextgroup=vimWincmdArg contains=vimWhitespace
|
|
Vim9 syn match vim9Wincmd "^\s*\<winc\%[md]\>\ze\s\+=\s*\%([#|]\|$\)" skipwhite nextgroup=vimWincmdArg contains=vimWhitespace
|
|
|
|
" allowed anywhere in the file
|
|
if !s:vim9script
|
|
syn match vimShebangError "^\s*\zs#!.*" display
|
|
endif
|
|
syn match vimShebang "\%^#!.*" display
|
|
|
|
|
|
" Function Call Highlighting: {{{2
|
|
" (following Gautam Iyer's suggestion)
|
|
" ==========================
|
|
syn match vimFunc contained "\<\l\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimFuncName
|
|
" dict-key only
|
|
syn match vimUserFuncKey contained "\%(\l\|\d\)\w*\ze\%(\s*(\|<.*>(\)" skipwhite nextgroup=vimOperParen,vim9TypeArgs contains=vim9MethodName
|
|
syn match vimUserFunc contained "\<[[:upper:]_]\w*\ze\%(\s*(\|<.*>(\)" skipwhite nextgroup=vimOperParen,vim9TypeArgs contains=vim9MethodName,vim9Super,vim9This
|
|
syn match vimUserFunc contained "\<\%(g:\)\=\%(\h\w*#\)\+\h\w*\ze\%(\s*(\|<.*>(\)" skipwhite nextgroup=vimOperParen contains=vimVarScope
|
|
syn match vimUserFunc contained "\%(\<[sgbwtlav]:\|<[sS][iI][dD]>\)\h\w*\ze\%(\s*(\|<.*>(\)" skipwhite nextgroup=vimOperParen,vim9TypeArgs contains=vimVarScope,vimNotation
|
|
|
|
Vim9 syn match vim9UserFunc contained "\s\=\%([sgbwtv]:\|<[sS][iI][dD]>\)\=\h\w*\ze[(<]" skipwhite nextgroup=vimOperParen,vim9TypeArgs contains=vimVarScope,vimNotation,vim9MethodName,vim9Super,vim9This,vimWhitespace
|
|
Vim9 syn match vim9UserFunc contained "\s\=\%(g:\)\=\%(\h\w*#\)\+\h\w*\ze[(<]" skipwhite nextgroup=vimOperParen contains=vimVarScope,vimWhitespace
|
|
Vim9 syn match vim9Func contained "\l\w*\ze(" skipwhite nextgroup=vimOperParen contains=vimFuncName
|
|
" higher priority for matches in command position
|
|
Vim9 syn match vim9FuncWrap contained "\s\+\l\w*\ze(" contains=vim9Func transparent
|
|
|
|
syn cluster vimFunc contains=vimFunc,vimUserFunc
|
|
syn cluster vim9Func contains=vim9FuncWrap,vim9UserFunc
|
|
|
|
syn region vim9TypeArgs contained
|
|
\ matchgroup=Delimiter
|
|
\ start="<\ze\a"
|
|
\ end=">"
|
|
\ nextgroup=vimOperParen
|
|
\ contains=@vimType
|
|
\ oneline
|
|
|
|
" Vim9 script Regions: {{{2
|
|
" ==================
|
|
|
|
if s:vim9script
|
|
syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9LineStart,vim9Comment
|
|
VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimLineStart,vimComment
|
|
|
|
syn keyword vim9Vim9ScriptArg noclear contained
|
|
syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
|
|
endif
|
|
|
|
" Command-line Window Lines: {{{2
|
|
" =========================
|
|
|
|
if s:cmdline_window
|
|
syn region vimCommandLineWindowLine
|
|
\ start="^"
|
|
\ end="$"
|
|
\ contains=TOP,vimCommandLineWindowLine
|
|
\ oneline
|
|
\ keepend
|
|
endif
|
|
|
|
" Synchronize (speed) {{{2
|
|
"============
|
|
|
|
exe "syn sync minlines=" .. get(g:, "vimsyn_minlines", 100)
|
|
exe "syn sync maxlines=" .. get(g:, "vimsyn_maxlines", 200)
|
|
|
|
syn sync linecont "^\s\+\\"
|
|
syn sync linebreaks=2
|
|
syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
|
|
|
|
" ====================
|
|
" Highlighting Settings {{{2
|
|
" ====================
|
|
|
|
if !exists("skip_vim_syntax_inits")
|
|
if !exists("g:vimsyn_noerror")
|
|
hi def link vimBehaveError vimError
|
|
hi def link vimCollClassErr vimError
|
|
hi def link vimErrSetting vimError
|
|
hi def link vimFTError vimError
|
|
hi def link vimFunctionError vimError
|
|
hi def link vimFunc vimError
|
|
hi def link vim9Func vimError
|
|
hi def link vimHiAttribList vimError
|
|
hi def link vimHiCtermError vimError
|
|
hi def link vimHiKeyError vimError
|
|
hi def link vimMapModErr vimError
|
|
hi def link vimMarkArgError vimError
|
|
hi def link vimShebangError vimError
|
|
hi def link vimSortOptionsError Error
|
|
hi def link vimSubstFlagErr vimError
|
|
hi def link vimSynCaseError vimError
|
|
hi def link vimSyncError vimError
|
|
hi def link vimSynConcealError vimError
|
|
hi def link vimSynError vimError
|
|
hi def link vimSynKeyError vimError
|
|
hi def link vimSynFoldlevelError vimError
|
|
hi def link vimSynIskeywordError vimError
|
|
hi def link vimSynSpellError vimError
|
|
hi def link vimBufnrWarn vimWarn
|
|
|
|
hi def link vim9TypeAliasError vimError
|
|
endif
|
|
|
|
hi def link vimAbb vimCommand
|
|
hi def link vimAddress Constant
|
|
hi def link vimAddressPattern Regexp
|
|
hi def link vimAddressOffset Type
|
|
hi def link vimAddressSlashEscape Special
|
|
hi def link vimAddressQuestionEscape Special
|
|
hi def link vimAt vimCommand
|
|
hi def link vimAtArg Special
|
|
hi def link vimAugroupBang vimBang
|
|
hi def link vimAugroupError vimError
|
|
hi def link vimAugroupKey vimCommand
|
|
hi def link vimAutocmd vimCommand
|
|
hi def link vimAutocmdBang vimBang
|
|
hi def link vimAutocmdContinue vimContinue
|
|
hi def link vimAutocmdContinueComment vimContinueComment
|
|
hi def link vimAutocmdPatternEscape Special
|
|
hi def link vimAutoEvent Type
|
|
hi def link vimAutoEventGlob Type
|
|
hi def link vimAutocmdBufferPattern Special
|
|
hi def link vimAutocmdMod Special
|
|
hi def link vimAutocmdPatternSep vimSep
|
|
hi def link vimBang vimOper
|
|
hi def link vimBehaveBang vimBang
|
|
hi def link vimBehaveModel vimBehave
|
|
hi def link vimBehave vimCommand
|
|
hi def link vimBracket Delimiter
|
|
hi def link vimBreakaddFunc Special
|
|
hi def link vimBreakaddFile Special
|
|
hi def link vimBreakaddHere Special
|
|
hi def link vimBreakaddExpr Special
|
|
hi def link vimBreakpointGlob Special
|
|
hi def link vimBreakadd vimCommand
|
|
hi def link vimBreakdel vimCommand
|
|
hi def link vimBreaklist vimCommand
|
|
hi def link vimBuffer vimCommand
|
|
hi def link vimBuffer_ vimBuffer
|
|
hi def link vimCall vimCommand
|
|
hi def link vimCall_ vimCall
|
|
hi def link vimCatch vimCommand
|
|
hi def link vimCatchPattern Regexp
|
|
hi def link vimChangeBang vimBang
|
|
hi def link vimChangeCount vimCount
|
|
hi def link vimCd vimCommand
|
|
hi def link vimCdBang vimBang
|
|
hi def link vimCmdSepContinue vimContinue
|
|
hi def link vimCmdSepContinueComment vimContinueComment
|
|
hi def link vimCommand Statement
|
|
hi def link vimCommand_ vimCommand
|
|
hi def link vimCommandModifier vimCommand
|
|
hi def link vimCommandModifier_ vimCommandModifier
|
|
hi def link vimCommandModifierBang vimBang
|
|
hi def link vimCommandModifierContinue vimContinue
|
|
hi def link vimCommandModifierContinueComment vimContinueComment
|
|
hi def link vimComment Comment
|
|
hi def link vimCommentError vimError
|
|
hi def link vimCommentString vimString
|
|
hi def link vimCommentTitle PreProc
|
|
hi def link vimCondHL vimCommand
|
|
hi def link vimConst vimCommand
|
|
hi def link vimContinue Special
|
|
hi def link vimContinueComment vimComment
|
|
hi def link vimContinueString vimString
|
|
hi def link vimCopy vimCommand
|
|
hi def link vimCopy_ vimCopy
|
|
hi def link vimCount Number
|
|
hi def link vimCtrlChar SpecialChar
|
|
hi def link vimDebug vimCommand
|
|
hi def link vimDebuggreedy vimCommand
|
|
hi def link vimDebuggreedy_ vimDebuggreedy
|
|
hi def link vimDef vimCommand
|
|
hi def link vimDefBang vimBang
|
|
hi def link vimDefComment vim9Comment
|
|
hi def link vimDefer vimCommand
|
|
hi def link vimDefParam vimVar
|
|
hi def link vimDelcommand vimCommand
|
|
hi def link vimDelcommandAttr vimUserCmdAttr
|
|
hi def link vimDelete vimCommand
|
|
hi def link vimDelete_ vimDelete
|
|
hi def link vimDeleteCount Number
|
|
hi def link vimDeleteRegister Constant
|
|
hi def link vimDelfunction vimCommand
|
|
hi def link vimDelfunctionBang vimBang
|
|
hi def link vimDoautocmd vimCommand
|
|
hi def link vimDoautocmdMod Special
|
|
hi def link vimDoCommand vimCommand
|
|
hi def link vimDoCommand_ vimDoCommand
|
|
hi def link vimDoCommandBang vimBang
|
|
hi def link vimTextInputBang vimBang
|
|
hi def link vimTextInputComment vimComment
|
|
hi def link vimTextInputEnd vimCommand
|
|
hi def link vimTextInputText String
|
|
hi def link vimEcho vimCommand
|
|
hi def link vimEchohlNone vimGroup
|
|
hi def link vimEchohl vimCommand
|
|
hi def link vimElse vimCommand
|
|
hi def link vimElseif vimCommand
|
|
hi def link vimElseIfErr Error
|
|
hi def link vimEndfunction vimCommand
|
|
hi def link vimEnddef vimCommand
|
|
hi def link vimEndif vimCommand
|
|
hi def link vimEnvvar PreProc
|
|
hi def link vimError Error
|
|
hi def link vimEscape Special
|
|
hi def link vimEquals vimCommand
|
|
hi def link vimEval vimCommand
|
|
hi def link vimExFilter vimCommand
|
|
hi def link vimExFilterBang vimBang
|
|
hi def link vimExFilterPattern Regexp
|
|
hi def link vimFBVar vimVar
|
|
hi def link vimFgBgAttrib vimHiAttrib
|
|
hi def link vimFuncEcho vimCommand
|
|
hi def link vimFor vimCommand
|
|
hi def link vimForInContinue vimContinue
|
|
hi def link vimForInContinueComment vimContinueComment
|
|
hi def link vimFTCmd vimCommand
|
|
hi def link vimFTOption vimSynType
|
|
hi def link vimFunction vimCommand
|
|
hi def link vimFunctionBang vimBang
|
|
hi def link vimFunctionComment vimComment
|
|
hi def link vimFuncName Function
|
|
hi def link vimFunctionMod Special
|
|
hi def link vimFunctionPattern Regexp
|
|
hi def link vimFunctionParam vimVar
|
|
hi def link vimFunctionParamEquals vimOper
|
|
hi def link vimFunctionScope vimVarScope
|
|
hi def link vimFunctionSID vimNotation
|
|
hi def link vimGlobal vimCommand
|
|
hi def link vimGlobalPattern Regexp
|
|
hi def link vimGrep vimCommand
|
|
hi def link vimGrep_ vimGrep
|
|
hi def link vimGrepadd vimCommand
|
|
hi def link vimGrepadd_ vimGrepadd
|
|
hi def link vimGrepBang vimBang
|
|
hi def link vimGroup Type
|
|
hi def link vimGroupAdd vimSynOption
|
|
hi def link vimGroupListEquals vimSynOption
|
|
hi def link vimGroupListContinue vimContinue
|
|
hi def link vimGroupListContinueComment vimContinueComment
|
|
hi def link vimGroupName Normal
|
|
hi def link vimGroupRem vimSynOption
|
|
hi def link vimGroupSpecial Special
|
|
hi def link vimHelp vimCommand
|
|
hi def link vimHelpBang vimBang
|
|
hi def link vimHelpgrep vimCommand
|
|
hi def link vimHelpgrepPattern Regexp
|
|
hi def link vimHiAttrib PreProc
|
|
hi def link vimHiBang vimBang
|
|
hi def link vimHiClear Type
|
|
hi def link vimHiCtermColor Constant
|
|
hi def link vimHiCtermFgBg vimHiTerm
|
|
hi def link vimHiCtermfont vimHiTerm
|
|
hi def link vimHiCtermul vimHiTerm
|
|
hi def link vimHiCTerm vimHiTerm
|
|
hi def link vimHighlight vimCommand
|
|
hi def link vimHiGroup vimGroupName
|
|
hi def link vimHiGuiFgBg vimHiTerm
|
|
hi def link vimHiGuiFont vimHiTerm
|
|
hi def link vimHiGuiRgb vimNumber
|
|
hi def link vimHiGui vimHiTerm
|
|
hi def link vimHiNmbr Number
|
|
hi def link vimHiNone vimGroup
|
|
hi def link vimHiStartStop vimHiTerm
|
|
hi def link vimHiTerm Type
|
|
hi def link vimHLGroup vimGroup
|
|
hi def link vimHistory vimCommand
|
|
hi def link vimHistoryName Special
|
|
hi def link vimIf vimCommand
|
|
hi def link vimImport vimCommand
|
|
hi def link vimImportAutoload Special
|
|
hi def link vimImportAs vimImport
|
|
hi def link vim9KeymapLineComment vimKeymapLineComment
|
|
hi def link vimKeymapLineComment vimComment
|
|
hi def link vimKeymapTailComment vimComment
|
|
hi def link vimLambdaBrace Delimiter
|
|
hi def link vimLambdaOperator vimOper
|
|
hi def link vimLanguage vimCommand
|
|
hi def link vimLanguageCategory Special
|
|
hi def link vimLanguageNameReserved Constant
|
|
hi def link vimLet vimCommand
|
|
hi def link vimLetHeredoc vimString
|
|
hi def link vimLetHeredocStart Special
|
|
hi def link vimLetHeredocStop Special
|
|
hi def link vimLetRegister vimRegister
|
|
hi def link vimLetVar vimVar
|
|
hi def link vimLineComment vimComment
|
|
hi def link vimLoadkeymap vimCommand
|
|
hi def link vimLockvar vimCommand
|
|
hi def link vimLockvarBang vimBang
|
|
hi def link vimLockvarDepth vimNumber
|
|
hi def link vimLua vimCommand
|
|
hi def link vimLua_ vimLua
|
|
hi def link vimMake vimCommand
|
|
hi def link vimMakeadd vimCommand
|
|
hi def link vimMakeBang vimBang
|
|
hi def link vimMapBang vimBang
|
|
hi def link vimMapLeader vimBracket
|
|
hi def link vimMapLeaderKey vimNotation
|
|
hi def link vimMapModKey vimFunctionSID
|
|
hi def link vimMapMod vimBracket
|
|
hi def link vimMap vimCommand
|
|
hi def link vimMark vimCommand
|
|
hi def link vimMark_ vimMark
|
|
hi def link vimMatch vimCommand
|
|
hi def link vimMatch_ vimMatch
|
|
hi def link vimMatchGroup vimGroup
|
|
hi def link vimMatchNone vimGroup
|
|
hi def link vimMatchPattern Regexp
|
|
hi def link vimMenuBang vimBang
|
|
hi def link vimMenuClear Special
|
|
hi def link vimMenuMod vimMapMod
|
|
hi def link vimMenuName PreProc
|
|
hi def link vimMenu vimCommand
|
|
hi def link vimMenu_ vimMenu
|
|
hi def link vimMenuNotation vimNotation
|
|
hi def link vimMenuPriority Number
|
|
hi def link vimMenuStatus Special
|
|
hi def link vimMenutranslateComment vimComment
|
|
hi def link vim9MethodName vimFuncName
|
|
hi def link vimMtchComment vimComment
|
|
hi def link vimMzScheme vimCommand
|
|
hi def link vimMzScheme_ vimMzScheme
|
|
hi def link vimNonText NonText
|
|
hi def link vimNormal vimCommand
|
|
hi def link vimNotation Special
|
|
hi def link vimNotPatSep Regexp
|
|
hi def link vimNumber Number
|
|
hi def link vimOperError Error
|
|
hi def link vimOper Operator
|
|
hi def link vimOperContinue vimContinue
|
|
hi def link vimOperContinueComment vimContinueComment
|
|
hi def link vimOption PreProc
|
|
hi def link vimOptionVar Identifier
|
|
hi def link vimOptionVarName Identifier
|
|
hi def link vimPackadd vimCommand
|
|
hi def link vimPackaddBang vimBang
|
|
hi def link vimParenSep Delimiter
|
|
hi def link vimPatSepErr vimError
|
|
hi def link vimPatSepR vimPatSep
|
|
hi def link vimPatSep SpecialChar
|
|
hi def link vimPatSepZone Regexp
|
|
hi def link vimPatSepZ vimPatSep
|
|
hi def link vimPattern Type
|
|
hi def link vimPerl vimCommand
|
|
hi def link vimPerl_ vimPerl
|
|
hi def link vimPound vimCommand
|
|
hi def link vimPound_ vimPound
|
|
hi def link vimPoundCount Number
|
|
hi def link vimPrintFlag Special
|
|
hi def link vimProfile vimCommand
|
|
hi def link vimProfileArg vimSpecial
|
|
hi def link vimProfileBang vimBang
|
|
hi def link vimProfdel vimCommand
|
|
hi def link vimProfdelArg vimSpecial
|
|
hi def link vimPrompt vimCommand
|
|
hi def link vimPython vimCommand
|
|
hi def link vimPython3 vimCommand
|
|
hi def link vimPythonX vimCommand
|
|
hi def link vimPython__ vimPython
|
|
hi def link vimPython3__ vimPython3
|
|
hi def link vimPythonX__ vimPythonX
|
|
hi def link vimQuoteEscape vimEscape
|
|
hi def link vimRange Constant
|
|
hi def link vimRedir vimCommand
|
|
hi def link vimRedirBang vimBang
|
|
hi def link vimRedirFileOperator vimOper
|
|
hi def link vimRedirRegisterOperator vimOper
|
|
hi def link vimRedirVariableOperator vimOper
|
|
hi def link vimRedirEnd Special
|
|
hi def link vimRedirRegister vimRegister
|
|
hi def link vimRegister SpecialChar
|
|
hi def link vimReturn vimCommand
|
|
hi def link vimRuby vimCommand
|
|
hi def link vimRuby_ vimRuby
|
|
hi def link vimRuntime vimCommand
|
|
hi def link vimRuntimeBang vimBang
|
|
hi def link vimRuntimeWhere Special
|
|
hi def link vimScriptDelim Comment
|
|
hi def link vimScriptHeredocStart vimLetHeredocStart
|
|
hi def link vimScriptHeredocStop vimLetHeredocStop
|
|
hi def link vimSep Delimiter
|
|
hi def link vimSet vimCommand
|
|
hi def link vimSetAll vimOption
|
|
hi def link vimSetBang vimBang
|
|
hi def link vimSetComment vimComment
|
|
hi def link vimSetMod vimOption
|
|
hi def link vimSetSep vimSep
|
|
hi def link vimSetTermcap vimOption
|
|
hi def link vimShebang PreProc
|
|
hi def link vimShiftLeftCount Number
|
|
hi def link vimShiftLeftPlus Special
|
|
hi def link vimShiftLeft vimCommand
|
|
hi def link vimShiftRightCount Number
|
|
hi def link vimShiftRightPlus Special
|
|
hi def link vimShiftRight vimCommand
|
|
hi def link vimSleep vimCommand
|
|
hi def link vimSleep_ vimSleep
|
|
hi def link vimSleepArg Constant
|
|
hi def link vimSleepBang vimBang
|
|
hi def link vimSort vimCommand
|
|
hi def link vimSort_ vimSort
|
|
hi def link vimSortBang vimBang
|
|
hi def link vimSortOptions Special
|
|
hi def link vimSortPattern Regexp
|
|
hi def link vimSpecFile Identifier
|
|
hi def link vimSpecFileMod vimSpecFile
|
|
hi def link vimSpecial Type
|
|
hi def link vimStringCont vimString
|
|
hi def link vimString String
|
|
hi def link vimStringEnd vimString
|
|
hi def link vimStringInterpolationBrace vimEscape
|
|
hi def link vimSubstCount Number
|
|
hi def link vimSubstDelim Delimiter
|
|
hi def link vimSubstFlags Special
|
|
hi def link vimSubstPat Regexp
|
|
hi def link vimSubstSubstr SpecialChar
|
|
hi def link vimSubstTwoBS Regexp
|
|
hi def link vimSubst vimCommand
|
|
hi def link vimSubst_ vimSubst
|
|
hi def link vimSynCase Type
|
|
hi def link vimSyncCcomment Type
|
|
hi def link vimSynCchar vimSynOption
|
|
hi def link vimSynCcharValue Character
|
|
hi def link vimSyncClear Type
|
|
hi def link vimSyncFromstart Type
|
|
hi def link vimSyncGroup vimGroupName
|
|
hi def link vimSyncGroupName vimGroupName
|
|
hi def link vimSyncKey Type
|
|
hi def link vimSyncLinebreak Type
|
|
hi def link vimSyncLinecont Type
|
|
hi def link vimSyncLines Type
|
|
hi def link vimSyncMatch Type
|
|
hi def link vimSyncNone Type
|
|
hi def link vimSynConceal Type
|
|
hi def link vimSynContains vimSynOption
|
|
hi def link vimSyncRegion Type
|
|
hi def link vimSynFoldlevel Type
|
|
hi def link vimSynIskeyword Type
|
|
hi def link vimSynIskeywordSep Delimiter
|
|
hi def link vimSynContainedin vimSynContains
|
|
hi def link vimSynKeyOpt vimSynOption
|
|
hi def link vimSynMtchGrp vimSynOption
|
|
hi def link vimSynMtchOpt vimSynOption
|
|
hi def link vimSynNextgroup vimSynOption
|
|
hi def link vimSynNotPatRange vimSynRegPat
|
|
hi def link vimSynOption Special
|
|
hi def link vimSynPatRange Regexp
|
|
hi def link vimSynReg Type
|
|
hi def link vimSynRegOpt vimSynOption
|
|
hi def link vimSynRegPat Regexp
|
|
hi def link vimSynSpell Type
|
|
hi def link vimSyntax vimCommand
|
|
hi def link vimSynType vimSpecial
|
|
hi def link vimSyntime vimCommand
|
|
hi def link vimSyntimeArg vimSpecial
|
|
hi def link vimTcl vimCommand
|
|
hi def link vimTcl_ vimTcl
|
|
hi def link vimTerminal vimCommand
|
|
hi def link vimTerminal_ vimCommand
|
|
hi def link vimTerminalContinue vimContinue
|
|
hi def link vimTerminalContinueComment vimContinueComment
|
|
hi def link vimTerminalOption vimSpecial
|
|
hi def link vimTerminalKillOptionArg Constant
|
|
hi def link vimTerminalSizeOptionArg Constant
|
|
hi def link vimTerminalTypeOptionArg Constant
|
|
hi def link vimThrow vimCommand
|
|
hi def link vimTodo Todo
|
|
hi def link vimType Type
|
|
hi def link vimTypeAny vimType
|
|
hi def link vimTypeObject vimType
|
|
hi def link vimTypeObjectBracket vimTypeObject
|
|
hi def link vimUniq vimCommand
|
|
hi def link vimUniq_ vimUniq
|
|
hi def link vimUniqBang vimBang
|
|
hi def link vimUniqOptions Special
|
|
hi def link vimUniqPattern Regexp
|
|
hi def link vimUnlet vimCommand
|
|
hi def link vimUnletBang vimBang
|
|
hi def link vimUnlockvar vimCommand
|
|
hi def link vimUnmap vimMap
|
|
hi def link vimUserCmd vimCommand
|
|
hi def link vimUserCmdAttrAddr vimSpecial
|
|
hi def link vimUserCmdAttrComplete vimSpecial
|
|
hi def link vimUserCmdAttrCompleteFunc vimVar
|
|
hi def link vimUserCmdAttrNargs vimSpecial
|
|
hi def link vimUserCmdAttrRange vimSpecial
|
|
hi def link vimUserCmdAttrKey vimUserCmdAttr
|
|
hi def link vimUserCmdAttr Special
|
|
hi def link vimUserCmdAttrError Error
|
|
hi def link vimUserCmdError Error
|
|
hi def link vimUserCmdKey vimCommand
|
|
hi def link vimUserFunc Normal
|
|
hi def link vimUserFuncKey vimUserFunc
|
|
hi def link vimUsrCmdBang vimBang
|
|
hi def link vimVar Normal
|
|
hi def link vimVarKey vimVar
|
|
hi def link vimVarScope Identifier
|
|
hi def link vimVimgrep vimCommand
|
|
hi def link vimVimgrep_ vimVimgrep
|
|
hi def link vimVimgrepadd vimCommand
|
|
hi def link vimVimgrepadd_ vimVimgrepadd
|
|
hi def link vimVimgrepBang vimBang
|
|
hi def link vimVimgrepFlags Special
|
|
hi def link vimVimgrepPattern Regexp
|
|
hi def link vimVimVar Identifier
|
|
hi def link vimVimVarName Identifier
|
|
hi def link vimWarn WarningMsg
|
|
hi def link vimWhile vimCommand
|
|
hi def link vimWildcard Special
|
|
hi def link vimWildcardBraceComma vimWildcard
|
|
hi def link vimWildcardBracket vimWildcard
|
|
hi def link vimWildcardBracketCaret vimWildcard
|
|
hi def link vimWildcardBracketCharacter Normal
|
|
hi def link vimWildcardBracketCharacter Normal
|
|
hi def link vimWildcardBracketCharacterClass vimWildcard
|
|
hi def link vimWildcardBracketCollatingSymbol vimWildcard
|
|
hi def link vimWildcardBracketEnd vimWildcard
|
|
hi def link vimWildcardBracketEquivalenceClass vimWildcard
|
|
hi def link vimWildcardBracketEscape vimWildcard
|
|
hi def link vimWildcardBracketHyphen vimWildcard
|
|
hi def link vimWildcardBracketRightBracket vimWildcardBracketCharacter
|
|
hi def link vimWildcardBracketStart vimWildcard
|
|
hi def link vimWildcardEscape vimWildcard
|
|
hi def link vimWildcardInterval vimWildcard
|
|
hi def link vimWildcardQuestion vimWildcard
|
|
hi def link vimWildcardStar vimWildcard
|
|
hi def link vimWinCmd vimCommand
|
|
hi def link vimWrite vimCommand
|
|
hi def link vimWrite_ vimWrite
|
|
|
|
hi def link vim9Abstract vimCommand
|
|
hi def link vim9Boolean Boolean
|
|
hi def link vim9Class vimCommand
|
|
hi def link vim9Comment Comment
|
|
hi def link vim9CommentError vimError
|
|
hi def link vim9CommentTitle PreProc
|
|
hi def link vim9ConstructorDefParam vimVar
|
|
hi def link vim9Const vimCommand
|
|
hi def link vim9ContinueComment vimContinueComment
|
|
hi def link vim9Enum vimCommand
|
|
hi def link vim9EnumImplementedInterfaceComment vim9Comment
|
|
hi def link vim9EnumImplements vim9Implements
|
|
hi def link vim9EnumNameComment vim9Comment
|
|
hi def link vim9EnumNameContinue vimContinue
|
|
hi def link vim9EnumNameContinueComment vim9Comment
|
|
hi def link vim9EnumValueListCommaComment vim9Comment
|
|
hi def link vim9Export vimCommand
|
|
hi def link vim9Extends Keyword
|
|
hi def link vim9Final vimCommand
|
|
hi def link vim9For vimCommand
|
|
hi def link vim9ForInComment vim9Comment
|
|
hi def link vim9Implements Keyword
|
|
hi def link vim9AbstractDef vimCommand
|
|
hi def link vim9Interface vimCommand
|
|
hi def link vim9LambdaOperator vimOper
|
|
hi def link vim9LambdaOperatorComment vim9Comment
|
|
hi def link vim9LambdaParen vimParenSep
|
|
hi def link vim9LhsRegister vimLetRegister
|
|
hi def link vim9LhsVariable vimVar
|
|
hi def link vim9LineComment vimComment
|
|
hi def link vim9MethodDef vimCommand
|
|
hi def link vim9MethodDefComment vimDefComment
|
|
hi def link vim9MethodNameError vimFunctionError
|
|
hi def link vim9Null Constant
|
|
hi def link vim9Public vimCommand
|
|
hi def link vim9Static vimCommand
|
|
hi def link vim9Super Identifier
|
|
hi def link vim9This Identifier
|
|
hi def link vim9Type vimCommand
|
|
hi def link vim9TypeEquals vimOper
|
|
hi def link vim9Variable vimVar
|
|
hi def link vim9VariableType vimType
|
|
hi def link vim9VariableTypeAny vimTypeAny
|
|
hi def link vim9VariableTypeObject vimTypeObject
|
|
hi def link vim9VariableTypeObjectBracket vimTypeObjectBracket
|
|
hi def link vim9Var vimCommand
|
|
hi def link vim9Vim9ScriptArg Special
|
|
hi def link vim9Vim9Script vimCommand
|
|
hi def link vim9Wincmd vimWincmd
|
|
hi def link vimWincmd_ vimWincmd
|
|
|
|
hi def link vimCompilerSet vimCommand
|
|
hi def link vimVimExtend vimCommand
|
|
hi def link vimSynColor vimCommand
|
|
hi def link vimSynLink vimCommand
|
|
hi def link vimSynMenu vimCommand
|
|
hi def link vimSynMenuPath vimMenuName
|
|
hi def link vimVimFold vimCommand
|
|
hi def link vimVim9 vimCommand
|
|
hi def link vimVimL vimCommand
|
|
|
|
endif
|
|
|
|
" Current Syntax Variable: {{{2
|
|
let b:current_syntax = "vim"
|
|
|
|
" ---------------------------------------------------------------------
|
|
" Cleanup: {{{1
|
|
delc Vim9
|
|
delc VimL
|
|
delc VimExtend
|
|
delc VimFolda
|
|
delc VimFoldc
|
|
delc VimFolde
|
|
delc VimFoldf
|
|
delc VimFoldh
|
|
delc VimFoldH
|
|
delc VimFoldi
|
|
delc VimFoldl
|
|
delc VimFoldm
|
|
delc VimFoldp
|
|
delc VimFoldP
|
|
delc VimFoldr
|
|
delc VimFoldt
|
|
let &cpo = s:keepcpo
|
|
unlet s:keepcpo s:vim9script
|
|
" vim:ts=18 fdm=marker ft=vim
|