diff options
Diffstat (limited to 'vim73/syntax/context.vim')
-rw-r--r-- | vim73/syntax/context.vim | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/vim73/syntax/context.vim b/vim73/syntax/context.vim new file mode 100644 index 0000000..225cc6e --- /dev/null +++ b/vim73/syntax/context.vim @@ -0,0 +1,108 @@ +" Vim syntax file +" Language: ConTeXt typesetting engine +" Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2006-08-10 + +if exists("b:current_syntax") + finish +endif + +runtime! syntax/plaintex.vim +unlet b:current_syntax + +let s:cpo_save = &cpo +set 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 keepend +syn 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=@mpTop +endif + +" 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' + endif +endfunction + +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=@NoSpell +syn match contextSectioning '\\\%(sub\)*section\>' contains=@NoSpell + +syn match contextSpecial '\\crlf\>\|\\par\>\|-\{2,3}\||[<>/]\=|' + \ contains=@NoSpell +syn match contextSpecial /\\[`'"]/ +syn match contextSpecial +\\char\%(\d\{1,3}\|'\o\{1,3}\|"\x\{1,2}\)\>+ + \ contains=@NoSpell +syn match contextSpecial '\^\^.' +syn match contextSpecial '`\%(\\.\|\^\^.\|.\)' + +syn match contextStyle '\\\%(em\|ss\|hw\|cg\|mf\)\>' + \ contains=@NoSpell +syn match contextFont '\\\%(CAP\|Cap\|cap\|Caps\|kap\|nocap\)\>' + \ contains=@NoSpell +syn match contextFont '\\\%(Word\|WORD\|Words\|WORDS\)\>' + \ contains=@NoSpell +syn match contextFont '\\\%(vi\{1,3}\|ix\|xi\{0,2}\)\>' + \ contains=@NoSpell +syn match contextFont '\\\%(tf\|b[si]\|s[cl]\|os\)\%(xx\|[xabcd]\)\=\>' + \ contains=@NoSpell + +hi def link contextBlockDelim Keyword +hi def link contextBuiltin Keyword +hi def link contextDelimiter Delimiter +hi def link contextPreProc PreProc +hi def link contextSectioning PreProc +hi def link contextSpecial Special +hi def link contextType Type +hi def link contextStyle contextType +hi def link contextFont contextType + +let b:current_syntax = "context" + +let &cpo = s:cpo_save +unlet s:cpo_save |