108 lines · 4.1 KB · Text
RawDownload
" Vim syntax file" Language:         ConTeXt typesetting engine" Maintainer:       Nikolai Weibull <now@bitwi.se>" Latest Revision:  2006-08-10 if exists("b:current_syntax")  finishendif runtime! syntax/plaintex.vimunlet b:current_syntax let s:cpo_save = &cposet cpo&vim if !exists('g:context_include')  let g:context_include = ['mp', 'javascript', 'xml']endif syn spell   toplevel syn match   contextBlockDelim display '\\\%(start\|stop\)\a\+'                              \ contains=@NoSpell syn region  contextEscaped    display matchgroup=contextPreProc                              \ start='\\type\z(\A\)' end='\z1'syn region  contextEscaped    display matchgroup=contextPreProc                              \ start='\\type\={' end='}'syn region  contextEscaped    display matchgroup=contextPreProc                              \ start='\\type\=<<' end='>>'syn region  contextEscaped    matchgroup=contextPreProc                              \ start='\\start\z(\a*\%(typing\|typen\)\)'                              \ end='\\stop\z1' contains=plaintexComment keependsyn region  contextEscaped    display matchgroup=contextPreProc                              \ start='\\\h\+Type{' end='}'syn region  contextEscaped    display matchgroup=contextPreProc                              \ start='\\Typed\h\+{' end='}' syn match   contextBuiltin    display contains=@NoSpell      \ '\\\%(unprotect\|protect\|unexpanded\)'  syn match   contextPreProc    '^\s*\\\%(start\|stop\)\=\%(component\|environment\|project\|product\).*$'                              \ contains=@NoSpell if index(g:context_include, 'mp') != -1  syn include @mpTop          syntax/mp.vim  unlet b:current_syntax   syn region  contextMPGraphic  transparent matchgroup=contextBlockDelim                                \ start='\\start\z(\a*MPgraphic\|MP\%(page\|inclusions\|run\)\).*'                                \ end='\\stop\z1'                                \ contains=@mpTopendif " TODO: also need to implement this for \\typeC or something along those" lines.function! s:include_syntax(name, group)  if index(g:context_include, a:name) != -1    execute 'syn include @' . a:name . 'Top' 'syntax/' . a:name . '.vim'    unlet b:current_syntax    execute 'syn region context' . a:group . 'Code'          \ 'transparent matchgroup=contextBlockDelim'          \ 'start=+\\start' . a:group . '+ end=+\\stop' . a:group . '+'          \ 'contains=@' . a:name . 'Top'  endifendfunction call s:include_syntax('c', 'C')call s:include_syntax('ruby', 'Ruby')call s:include_syntax('javascript', 'JS')call s:include_syntax('xml', 'XML') syn match   contextSectioning '\\chapter\>' contains=@NoSpellsyn match   contextSectioning '\\\%(sub\)*section\>' contains=@NoSpell syn match   contextSpecial    '\\crlf\>\|\\par\>\|-\{2,3}\||[<>/]\=|'                              \ contains=@NoSpellsyn match   contextSpecial    /\\[`'"]/syn match   contextSpecial    +\\char\%(\d\{1,3}\|'\o\{1,3}\|"\x\{1,2}\)\>+                              \ contains=@NoSpellsyn match   contextSpecial    '\^\^.'syn match   contextSpecial    '`\%(\\.\|\^\^.\|.\)' syn match   contextStyle      '\\\%(em\|ss\|hw\|cg\|mf\)\>'                              \ contains=@NoSpellsyn match   contextFont       '\\\%(CAP\|Cap\|cap\|Caps\|kap\|nocap\)\>'                              \ contains=@NoSpellsyn match   contextFont       '\\\%(Word\|WORD\|Words\|WORDS\)\>'                              \ contains=@NoSpellsyn match   contextFont       '\\\%(vi\{1,3}\|ix\|xi\{0,2}\)\>'                              \ contains=@NoSpellsyn match   contextFont       '\\\%(tf\|b[si]\|s[cl]\|os\)\%(xx\|[xabcd]\)\=\>'                              \ contains=@NoSpell hi def link contextBlockDelim Keywordhi def link contextBuiltin    Keywordhi def link contextDelimiter  Delimiterhi def link contextPreProc    PreProchi def link contextSectioning PreProchi def link contextSpecial    Specialhi def link contextType       Typehi def link contextStyle      contextTypehi def link contextFont       contextType let b:current_syntax = "context" let &cpo = s:cpo_saveunlet s:cpo_save