142eeac35SBram Moolenaar" Vim syntax file 242eeac35SBram Moolenaar" Language: ConTeXt typesetting engine 3*46fceaaaSBram Moolenaar" Maintainer: Nicola Vitacolonna <[email protected]> 4*46fceaaaSBram Moolenaar" Former Maintainers: Nikolai Weibull <[email protected]> 5*46fceaaaSBram Moolenaar" Latest Revision: 2016 Oct 16 642eeac35SBram Moolenaar 742eeac35SBram Moolenaarif exists("b:current_syntax") 842eeac35SBram Moolenaar finish 942eeac35SBram Moolenaarendif 1042eeac35SBram Moolenaar 1157657d85SBram Moolenaarruntime! syntax/plaintex.vim 1225394022SBram Moolenaarunlet b:current_syntax 1357657d85SBram Moolenaar 1442eeac35SBram Moolenaarlet s:cpo_save = &cpo 1542eeac35SBram Moolenaarset cpo&vim 1642eeac35SBram Moolenaar 17*46fceaaaSBram Moolenaar" Dictionary of (filetype, group) pairs to highlight between \startGROUP \stopGROUP. 18*46fceaaaSBram Moolenaarlet s:context_include = get(b:, 'context_include', get(g:, 'context_include', {'xml': 'XML'})) 19*46fceaaaSBram Moolenaar 20*46fceaaaSBram Moolenaar" For backward compatibility (g:context_include used to be a List) 21*46fceaaaSBram Moolenaarif type(s:context_include) ==# type([]) 22*46fceaaaSBram Moolenaar let g:context_metapost = (index(s:context_include, 'mp') != -1) 23*46fceaaaSBram Moolenaar let s:context_include = filter( 24*46fceaaaSBram Moolenaar \ {'c': 'C', 'javascript': 'JS', 'ruby': 'Ruby', 'xml': 'XML'}, 25*46fceaaaSBram Moolenaar \ { k,_ -> index(s:context_include, k) != -1 } 26*46fceaaaSBram Moolenaar \ ) 2757657d85SBram Moolenaarendif 2842eeac35SBram Moolenaar 29*46fceaaaSBram Moolenaarsyn iskeyword @,48-57,a-z,A-Z,192-255 30*46fceaaaSBram Moolenaar 3125394022SBram Moolenaarsyn spell toplevel 3225394022SBram Moolenaar 33*46fceaaaSBram Moolenaar" ConTeXt options, i.e., [...] blocks 34*46fceaaaSBram Moolenaarsyn region contextOptions matchgroup=contextDelimiter start='\[' end=']\|\ze\\stop' skip='\\\[\|\\\]' contains=ALLBUT,contextBeginEndLua,@Spell 3542eeac35SBram Moolenaar 36*46fceaaaSBram Moolenaar" Highlight braces 37*46fceaaaSBram Moolenaarsyn match contextDelimiter '[{}]' 38*46fceaaaSBram Moolenaar 39*46fceaaaSBram Moolenaar" Comments 40*46fceaaaSBram Moolenaarsyn match contextComment '\\\@<!\%(\\\\\)*\zs%.*$' display contains=initexTodo 41*46fceaaaSBram Moolenaarsyn match contextComment '^\s*%[CDM].*$' display contains=initexTodo 42*46fceaaaSBram Moolenaar 43*46fceaaaSBram Moolenaarsyn match contextBlockDelim '\\\%(start\|stop\)\a\+' contains=@NoSpell 44*46fceaaaSBram Moolenaar 45*46fceaaaSBram Moolenaarsyn region contextEscaped matchgroup=contextPreProc start='\\type\%(\s*\|\n\)*\z([^A-Za-z%]\)' end='\z1' 46*46fceaaaSBram Moolenaarsyn region contextEscaped matchgroup=contextPreProc start='\\type\=\%(\s\|\n\)*{' end='}' 47*46fceaaaSBram Moolenaarsyn region contextEscaped matchgroup=contextPreProc start='\\type\=\%(\s*\|\n\)*<<' end='>>' 4842eeac35SBram Moolenaarsyn region contextEscaped matchgroup=contextPreProc 4942eeac35SBram Moolenaar \ start='\\start\z(\a*\%(typing\|typen\)\)' 5025394022SBram Moolenaar \ end='\\stop\z1' contains=plaintexComment keepend 51*46fceaaaSBram Moolenaarsyn region contextEscaped matchgroup=contextPreProc start='\\\h\+Type\%(\s\|\n\)*{' end='}' 52*46fceaaaSBram Moolenaarsyn region contextEscaped matchgroup=contextPreProc start='\\Typed\h\+\%(\s\|\n\)*{' end='}' 5342eeac35SBram Moolenaar 5457657d85SBram Moolenaarsyn match contextBuiltin display contains=@NoSpell 55*46fceaaaSBram Moolenaar \ '\\\%(unprotect\|protect\|unexpanded\)\>' 5642eeac35SBram Moolenaar 57*46fceaaaSBram Moolenaarsyn match contextPreProc '^\s*\\\%(start\|stop\)\=\%(component\|environment\|project\|product\)\>' 5842eeac35SBram Moolenaar \ contains=@NoSpell 5957657d85SBram Moolenaar 60*46fceaaaSBram Moolenaarif get(b:, 'context_metapost', get(g:, 'context_metapost', 1)) 61*46fceaaaSBram Moolenaar let b:mp_metafun_macros = 1 " Highlight MetaFun keywords 6257657d85SBram Moolenaar syn include @mpTop syntax/mp.vim 6357657d85SBram Moolenaar unlet b:current_syntax 6457657d85SBram Moolenaar 65*46fceaaaSBram Moolenaar syn region contextMPGraphic matchgroup=contextBlockDelim 66*46fceaaaSBram Moolenaar \ start='\\start\z(MP\%(clip\|code\|definitions\|drawing\|environment\|extensions\|inclusions\|initializations\|page\|\)\)\>.*$' 6757657d85SBram Moolenaar \ end='\\stop\z1' 68*46fceaaaSBram Moolenaar \ contains=@mpTop,@NoSpell 69*46fceaaaSBram Moolenaar syn region contextMPGraphic matchgroup=contextBlockDelim 70*46fceaaaSBram Moolenaar \ start='\\start\z(\%(\%[re]usable\|use\|unique\|static\)MPgraphic\|staticMPfigure\|uniqueMPpagegraphic\)\>.*$' 71*46fceaaaSBram Moolenaar \ end='\\stop\z1' 72*46fceaaaSBram Moolenaar \ contains=@mpTop,@NoSpell 7357657d85SBram Moolenaarendif 7457657d85SBram Moolenaar 75*46fceaaaSBram Moolenaarif get(b:, 'context_lua', get(g:, 'context_lua', 1)) 76*46fceaaaSBram Moolenaar syn include @luaTop syntax/lua.vim 7757657d85SBram Moolenaar unlet b:current_syntax 78*46fceaaaSBram Moolenaar 79*46fceaaaSBram Moolenaar syn region contextLuaCode matchgroup=contextBlockDelim 80*46fceaaaSBram Moolenaar \ start='\\startluacode\>' 81*46fceaaaSBram Moolenaar \ end='\\stopluacode\>' keepend 82*46fceaaaSBram Moolenaar \ contains=@luaTop,@NoSpell 83*46fceaaaSBram Moolenaar 84*46fceaaaSBram Moolenaar syn match contextDirectLua "\\\%(directlua\|ctxlua\)\>\%(\s*%.*$\)\=" 85*46fceaaaSBram Moolenaar \ nextgroup=contextBeginEndLua skipwhite skipempty 86*46fceaaaSBram Moolenaar \ contains=initexComment 87*46fceaaaSBram Moolenaar syn region contextBeginEndLua matchgroup=contextSpecial 88*46fceaaaSBram Moolenaar \ start="{" end="}" skip="\\[{}]" 89*46fceaaaSBram Moolenaar \ contained contains=@luaTop,@NoSpell 9057657d85SBram Moolenaarendif 9157657d85SBram Moolenaar 92*46fceaaaSBram Moolenaarfor synname in keys(s:context_include) 93*46fceaaaSBram Moolenaar execute 'syn include @' . synname . 'Top' 'syntax/' . synname . '.vim' 94*46fceaaaSBram Moolenaar unlet b:current_syntax 95*46fceaaaSBram Moolenaar execute 'syn region context' . s:context_include[synname] . 'Code' 96*46fceaaaSBram Moolenaar \ 'matchgroup=contextBlockDelim' 97*46fceaaaSBram Moolenaar \ 'start=+\\start' . s:context_include[synname] . '+' 98*46fceaaaSBram Moolenaar \ 'end=+\\stop' . s:context_include[synname] . '+' 99*46fceaaaSBram Moolenaar \ 'contains=@' . synname . 'Top,@NoSpell' 100*46fceaaaSBram Moolenaarendfor 10142eeac35SBram Moolenaar 102*46fceaaaSBram Moolenaarsyn match contextSectioning '\\\%(start\|stop\)\=\%(\%(sub\)*section\|\%(sub\)*subject\|chapter\|part\|component\|product\|title\)\>' 103*46fceaaaSBram Moolenaar \ contains=@NoSpell 10442eeac35SBram Moolenaar 10542eeac35SBram Moolenaarsyn match contextSpecial '\\crlf\>\|\\par\>\|-\{2,3}\||[<>/]\=|' 10642eeac35SBram Moolenaar \ contains=@NoSpell 10757657d85SBram Moolenaarsyn match contextSpecial /\\[`'"]/ 10842eeac35SBram Moolenaarsyn match contextSpecial +\\char\%(\d\{1,3}\|'\o\{1,3}\|"\x\{1,2}\)\>+ 10942eeac35SBram Moolenaar \ contains=@NoSpell 11042eeac35SBram Moolenaarsyn match contextSpecial '\^\^.' 11142eeac35SBram Moolenaarsyn match contextSpecial '`\%(\\.\|\^\^.\|.\)' 11242eeac35SBram Moolenaar 11357657d85SBram Moolenaarsyn match contextStyle '\\\%(em\|ss\|hw\|cg\|mf\)\>' 11442eeac35SBram Moolenaar \ contains=@NoSpell 11542eeac35SBram Moolenaarsyn match contextFont '\\\%(CAP\|Cap\|cap\|Caps\|kap\|nocap\)\>' 11642eeac35SBram Moolenaar \ contains=@NoSpell 11742eeac35SBram Moolenaarsyn match contextFont '\\\%(Word\|WORD\|Words\|WORDS\)\>' 11842eeac35SBram Moolenaar \ contains=@NoSpell 11942eeac35SBram Moolenaarsyn match contextFont '\\\%(vi\{1,3}\|ix\|xi\{0,2}\)\>' 12042eeac35SBram Moolenaar \ contains=@NoSpell 12157657d85SBram Moolenaarsyn match contextFont '\\\%(tf\|b[si]\|s[cl]\|os\)\%(xx\|[xabcd]\)\=\>' 12242eeac35SBram Moolenaar \ contains=@NoSpell 12342eeac35SBram Moolenaar 124*46fceaaaSBram Moolenaarhi def link contextOptions Typedef 125*46fceaaaSBram Moolenaarhi def link contextComment Comment 12642eeac35SBram Moolenaarhi def link contextBlockDelim Keyword 12742eeac35SBram Moolenaarhi def link contextBuiltin Keyword 12842eeac35SBram Moolenaarhi def link contextDelimiter Delimiter 129*46fceaaaSBram Moolenaarhi def link contextEscaped String 13042eeac35SBram Moolenaarhi def link contextPreProc PreProc 13142eeac35SBram Moolenaarhi def link contextSectioning PreProc 13242eeac35SBram Moolenaarhi def link contextSpecial Special 13357657d85SBram Moolenaarhi def link contextType Type 13442eeac35SBram Moolenaarhi def link contextStyle contextType 13542eeac35SBram Moolenaarhi def link contextFont contextType 136*46fceaaaSBram Moolenaarhi def link contextDirectLua Keyword 13742eeac35SBram Moolenaar 13842eeac35SBram Moolenaarlet b:current_syntax = "context" 13942eeac35SBram Moolenaar 14042eeac35SBram Moolenaarlet &cpo = s:cpo_save 14142eeac35SBram Moolenaarunlet s:cpo_save 142