mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
109 lines
4.1 KiB
VimL
109 lines
4.1 KiB
VimL
|
" 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
|