xref: /vim-8.2.3635/runtime/syntax/context.vim (revision 46fceaaa)
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