blob: 93b14b194f7e0d2aea9df3f9ace71bb79507df92 [file] [log] [blame]
Bram Moolenaar42eeac32005-06-29 22:40:58 +00001" Vim syntax file
2" Language: ConTeXt typesetting engine
Bram Moolenaar57657d82006-04-21 22:12:41 +00003" Maintainer: Nikolai Weibull <now@bitwi.se>
4" Latest Revision: 2006-04-19
Bram Moolenaar42eeac32005-06-29 22:40:58 +00005
6if exists("b:current_syntax")
7 finish
8endif
9
Bram Moolenaar57657d82006-04-21 22:12:41 +000010runtime! syntax/plaintex.vim
11
Bram Moolenaar42eeac32005-06-29 22:40:58 +000012let s:cpo_save = &cpo
13set cpo&vim
14
Bram Moolenaar57657d82006-04-21 22:12:41 +000015if !exists('g:context_include')
16 let g:context_include = ['mp', 'javascript', 'xml']
17endif
Bram Moolenaar42eeac32005-06-29 22:40:58 +000018
19syn match contextBlockDelim display '\\\%(start\|stop\)\a\+'
20 \ contains=@NoSpell
21
Bram Moolenaar42eeac32005-06-29 22:40:58 +000022syn region contextEscaped display matchgroup=contextPreProc
23 \ start='\\type\z(\A\)' end='\z1'
24syn region contextEscaped display matchgroup=contextPreProc
25 \ start='\\type\={' end='}'
26syn region contextEscaped display matchgroup=contextPreProc
27 \ start='\\type\=<<' end='>>'
28syn region contextEscaped matchgroup=contextPreProc
29 \ start='\\start\z(\a*\%(typing\|typen\)\)'
30 \ end='\\stop\z1'
31syn region contextEscaped display matchgroup=contextPreProc
32 \ start='\\\h\+Type{' end='}'
33syn region contextEscaped display matchgroup=contextPreProc
34 \ start='\\Typed\h\+{' end='}'
35
Bram Moolenaar57657d82006-04-21 22:12:41 +000036syn match contextBuiltin display contains=@NoSpell
37 \ '\\\%(unprotect\|protect\|unexpanded\)'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000038
39syn match contextPreProc '^\s*\\\%(start\|stop\)\=\%(component\|environment\|project\|product\).*$'
40 \ contains=@NoSpell
Bram Moolenaar57657d82006-04-21 22:12:41 +000041
42if index(g:context_include, 'mp') != -1
43 syn include @mpTop syntax/mp.vim
44 unlet b:current_syntax
45
46 syn region contextMPGraphic transparent matchgroup=contextBlockDelim
47 \ start='\\start\z(\a*MPgraphic\|MP\%(page\|inclusions\|run\)\).*'
48 \ end='\\stop\z1'
49 \ contains=@mpTop
50endif
51
52" TODO: also need to implement this for \\typeC or something along those
53" lines.
54function! s:include_syntax(name, group)
55 if index(g:context_include, a:name) != -1
56 execute 'syn include @' . a:name . 'Top' 'syntax/' . a:name . '.vim'
57 unlet b:current_syntax
58 execute 'syn region context' . a:group . 'Code'
59 \ 'transparent matchgroup=contextBlockDelim'
60 \ 'start=+\\start' . a:group . '+ end=+\\stop' . a:group . '+'
61 \ 'contains=@' . a:name . 'Top'
62 endif
63endfunction
64
65call s:include_syntax('c', 'C')
66call s:include_syntax('ruby', 'Ruby')
67call s:include_syntax('javascript', 'JS')
68call s:include_syntax('xml', 'XML')
Bram Moolenaar42eeac32005-06-29 22:40:58 +000069
70syn match contextSectioning '\\chapter\>' contains=@NoSpell
71syn match contextSectioning '\\\%(sub\)*section\>' contains=@NoSpell
72
73syn match contextSpecial '\\crlf\>\|\\par\>\|-\{2,3}\||[<>/]\=|'
74 \ contains=@NoSpell
Bram Moolenaar57657d82006-04-21 22:12:41 +000075syn match contextSpecial /\\[`'"]/
Bram Moolenaar42eeac32005-06-29 22:40:58 +000076syn match contextSpecial +\\char\%(\d\{1,3}\|'\o\{1,3}\|"\x\{1,2}\)\>+
77 \ contains=@NoSpell
78syn match contextSpecial '\^\^.'
79syn match contextSpecial '`\%(\\.\|\^\^.\|.\)'
80
Bram Moolenaar57657d82006-04-21 22:12:41 +000081syn match contextStyle '\\\%(em\|ss\|hw\|cg\|mf\)\>'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000082 \ contains=@NoSpell
83syn match contextFont '\\\%(CAP\|Cap\|cap\|Caps\|kap\|nocap\)\>'
84 \ contains=@NoSpell
85syn match contextFont '\\\%(Word\|WORD\|Words\|WORDS\)\>'
86 \ contains=@NoSpell
87syn match contextFont '\\\%(vi\{1,3}\|ix\|xi\{0,2}\)\>'
88 \ contains=@NoSpell
Bram Moolenaar57657d82006-04-21 22:12:41 +000089syn match contextFont '\\\%(tf\|b[si]\|s[cl]\|os\)\%(xx\|[xabcd]\)\=\>'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000090 \ contains=@NoSpell
91
Bram Moolenaar42eeac32005-06-29 22:40:58 +000092hi def link contextBlockDelim Keyword
93hi def link contextBuiltin Keyword
94hi def link contextDelimiter Delimiter
95hi def link contextPreProc PreProc
96hi def link contextSectioning PreProc
97hi def link contextSpecial Special
Bram Moolenaar57657d82006-04-21 22:12:41 +000098hi def link contextType Type
Bram Moolenaar42eeac32005-06-29 22:40:58 +000099hi def link contextStyle contextType
100hi def link contextFont contextType
Bram Moolenaar42eeac32005-06-29 22:40:58 +0000101
102let b:current_syntax = "context"
103
104let &cpo = s:cpo_save
105unlet s:cpo_save