| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | vim9script | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Vim syntax file | 
					
						
							|  |  |  | # Language:           ConTeXt typesetting engine | 
					
						
							|  |  |  | # Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com> | 
					
						
							|  |  |  | # Former Maintainers: Nikolai Weibull <now@bitwi.se> | 
					
						
							|  |  |  | # Latest Revision:    2022 Aug 12 | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if exists("b:current_syntax") | 
					
						
							|  |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | # Dictionary of (filetype, group) pairs to highlight between \startGROUP \stopGROUP. | 
					
						
							|  |  |  | var context_include = get(b:, 'context_include', get(g:, 'context_include', {'xml': 'XML'})) | 
					
						
							| 
									
										
										
										
											2006-04-21 22:12:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | # Deprecation warning | 
					
						
							|  |  |  | if type(context_include) ==# type([]) | 
					
						
							|  |  |  |   echomsg "[ConTeXt] b:context_include/g:context_include must be Dictionaries." | 
					
						
							|  |  |  |   context_include = {'xml': 'XML'} | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | syn iskeyword @,48-57,_,!,?,a-z,A-Z,192-255 | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | syn spell toplevel | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | runtime! syntax/shared/context-data-context.vim | 
					
						
							|  |  |  | runtime! syntax/shared/context-data-interfaces.vim | 
					
						
							|  |  |  | runtime! syntax/shared/context-data-tex.vim | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | syn match contextCommand '\\\k\+\>' display contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2007-05-10 19:06:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | # ConTeXt options, i.e., [...] blocks | 
					
						
							|  |  |  | syn region  contextOptions    matchgroup=contextDelimiter start='\[' end=']\|\ze\\stop' skip='\\\[\|\\\]' contains=TOP,@Spell | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | # Highlight braces | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | syn match   contextDelimiter  '[{}]' | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | # Comments | 
					
						
							|  |  |  | syn match   contextComment    '\%(\_^\|[^\\]\)\%(\\\\\)*\zs%.*$' display contains=contextTodo,contextMagicLine | 
					
						
							|  |  |  | syn match   contextComment    '^\s*%[CDM].*$'                    display contains=contextTodo,contextMagicLine | 
					
						
							|  |  |  | syn keyword contextTodo       TODO FIXME XXX NOTE                contained | 
					
						
							|  |  |  | syn match   contextMagicLine  '^\s*%\s*!TEX.*$'                  contained | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | syn match   contextBlockDelim '\\\%(start\|stop\)\k\+' contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | syn region  contextEscaped    matchgroup=contextPreProc start='\\type\%(\s*\|\n\)*\z([^A-Za-z%]\)' end='\z1' | 
					
						
							|  |  |  | syn region  contextEscaped    matchgroup=contextPreProc start='\\type\=\%(\s\|\n\)*{' end='}' | 
					
						
							|  |  |  | syn region  contextEscaped    matchgroup=contextPreProc start='\\type\=\%(\s*\|\n\)*<<' end='>>' | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | syn region  contextEscaped    matchgroup=contextPreProc | 
					
						
							|  |  |  |                               \ start='\\start\z(\a*\%(typing\|typen\)\)' | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  |                               \ end='\\stop\z1' contains=contextComment keepend | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | syn region  contextEscaped    matchgroup=contextPreProc start='\\\h\+Type\%(\s\|\n\)*{' end='}' | 
					
						
							|  |  |  | syn region  contextEscaped    matchgroup=contextPreProc start='\\Typed\h\+\%(\s\|\n\)*{' end='}' | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | syn match   contextBuiltin    '\\unexpanded\>' display contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | # \unprotect... \protect regions | 
					
						
							|  |  |  | syn region  contextUnprotect  matchgroup=contextBuiltin start='\\unprotect' end='\\protect' contains=TOP | 
					
						
							|  |  |  | syn match   contextSequence   '\\[a-zA-Z]*[@_!?]\+[a-zA-Z@_!?]*' contains=@NoSpell contained containedin=contextUnprotect | 
					
						
							| 
									
										
										
										
											2006-04-21 22:12:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | # Math | 
					
						
							|  |  |  | syn match  contextMathCmd '\\m\%(ath\%(ematics\)\=\)\=\>' | 
					
						
							|  |  |  | syn region contextInlineMath matchgroup=contextMathDelim start='\$' skip='\\\\\|\\\$' end='\$' | 
					
						
							|  |  |  | syn region contextDisplayMath matchgroup=contextMathDelim start='\$\$' skip='\\\\\|\\\$' end='\$\$' keepend | 
					
						
							|  |  |  | syn region contextDisplayMath matchgroup=contextBlockDelim start='\\startformula' end='\\stopformula' contains=TOP | 
					
						
							| 
									
										
										
										
											2006-04-21 22:12:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | # MetaFun | 
					
						
							|  |  |  | b:mp_metafun = 1 | 
					
						
							|  |  |  | syn include @mpTop syntax/mp.vim | 
					
						
							|  |  |  | unlet b:current_syntax | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | syn region  contextMPGraphic  matchgroup=contextBlockDelim | 
					
						
							|  |  |  |       \ start='\\start\z(MP\%(clip\|code\|definitions\|drawing\|environment\|extensions\|inclusions\|initializations\|page\|\)\)\>.*$' | 
					
						
							|  |  |  |       \ end='\\stop\z1' | 
					
						
							|  |  |  |       \ contains=@mpTop,@NoSpell | 
					
						
							|  |  |  | syn region  contextMPGraphic  matchgroup=contextBlockDelim | 
					
						
							|  |  |  |       \ start='\\start\z(\%(\%[re]usable\|use\|unique\|static\)MPgraphic\|staticMPfigure\|uniqueMPpagegraphic\)\>.*$' | 
					
						
							|  |  |  |       \ end='\\stop\z1' | 
					
						
							|  |  |  |       \ contains=@mpTop,@NoSpell | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Lua | 
					
						
							|  |  |  | syn include @luaTop syntax/lua.vim | 
					
						
							|  |  |  | unlet b:current_syntax | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | syn region  contextLuaCode    matchgroup=contextBlockDelim | 
					
						
							|  |  |  |       \ start='\\startluacode\>' | 
					
						
							|  |  |  |       \ end='\\stopluacode\>' keepend | 
					
						
							|  |  |  |       \ contains=@luaTop,@NoSpell | 
					
						
							|  |  |  | syn match   contextDirectLua  "\\\%(directlua\|ctxlua\)\>\%(\s*%.*$\)\=" | 
					
						
							|  |  |  |       \ nextgroup=contextBeginEndLua skipwhite skipempty | 
					
						
							|  |  |  |       \ contains=contextComment | 
					
						
							|  |  |  | syn region  contextBeginEndLua matchgroup=contextSpecial | 
					
						
							|  |  |  |       \ start="{" end="}" skip="\\[{}]" | 
					
						
							|  |  |  |       \ contained contains=@luaTop,@NoSpell | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | for synname in keys(context_include) | 
					
						
							|  |  |  |   execute 'syn include @' .. synname .. 'Top' 'syntax/' .. synname .. '.vim' | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  |   unlet b:current_syntax | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  |   execute 'syn region context' .. context_include[synname] .. 'Code' | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  |         \ 'matchgroup=contextBlockDelim' | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  |         \ 'start=+\\start' .. context_include[synname] .. '\w*+' | 
					
						
							|  |  |  |         \ 'end=+\\stop' .. context_include[synname] .. '\w*+' | 
					
						
							|  |  |  |         \ 'contains=@' .. synname .. 'Top,@NoSpell' | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | endfor | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | syn match   contextSectioning '\\\%(start\|stop\)\=\%(\%(sub\)*section\|\%(sub\)*subject\|chapter\|part\|component\|product\|title\)\>' contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | syn match   contextSpecial    '\\par\>\|-\{2,3}\||[<>/]\=|'                     contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2006-04-21 22:12:41 +00:00
										 |  |  | syn match   contextSpecial    /\\[`'"]/ | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | syn match   contextSpecial    +\\char\%(\d\{1,3}\|'\o\{1,3}\|"\x\{1,2}\)\>+     contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | syn match   contextSpecial    '\^\^.' | 
					
						
							|  |  |  | syn match   contextSpecial    '`\%(\\.\|\^\^.\|.\)' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | hi def link contextBlockDelim Keyword | 
					
						
							|  |  |  | hi def link contextBuiltin    Keyword | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | hi def link contextCommand    Keyword | 
					
						
							|  |  |  | hi def link contextComment    Comment | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | hi def link contextDelimiter  Delimiter | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | hi def link contextDirectLua  Keyword | 
					
						
							| 
									
										
										
										
											2016-10-23 21:21:08 +02:00
										 |  |  | hi def link contextEscaped    String | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | hi def link contextFont       contextType | 
					
						
							|  |  |  | hi def link contextKeyword    Keyword | 
					
						
							|  |  |  | hi def link contextInlineMath String | 
					
						
							|  |  |  | hi def link contextMagicLine  PreProc | 
					
						
							|  |  |  | hi def link contextMathCmd    Identifier | 
					
						
							|  |  |  | hi def link contextMathDelim  Delimiter | 
					
						
							|  |  |  | hi def link contextOptions    Typedef | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | hi def link contextPreProc    PreProc | 
					
						
							|  |  |  | hi def link contextSectioning PreProc | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | hi def link contextSequence   Identifier | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | hi def link contextSpecial    Special | 
					
						
							|  |  |  | hi def link contextStyle      contextType | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | hi def link contextTodo       Todo | 
					
						
							|  |  |  | hi def link contextType       Type | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | b:current_syntax = 'context' | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-15 18:51:32 +01:00
										 |  |  | # vim: sw=2 fdm=marker |