diff --git a/runtime/syntax/context.vim b/runtime/syntax/context.vim
index 225cc6e..b29f256 100644
--- a/runtime/syntax/context.vim
+++ b/runtime/syntax/context.vim
@@ -1,7 +1,8 @@
 " Vim syntax file
-" Language:         ConTeXt typesetting engine
-" Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-08-10
+" Language:           ConTeXt typesetting engine
+" Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
+" Former Maintainers: Nikolai Weibull <now@bitwi.se>
+" Latest Revision:    2016 Oct 16
 
 if exists("b:current_syntax")
   finish
@@ -13,65 +14,93 @@
 let s:cpo_save = &cpo
 set cpo&vim
 
-if !exists('g:context_include')
-  let g:context_include = ['mp', 'javascript', 'xml']
+" Dictionary of (filetype, group) pairs to highlight between \startGROUP \stopGROUP.
+let s:context_include = get(b:, 'context_include', get(g:, 'context_include', {'xml': 'XML'}))
+
+" For backward compatibility (g:context_include used to be a List)
+if type(s:context_include) ==# type([])
+  let g:context_metapost = (index(s:context_include, 'mp') != -1)
+  let s:context_include = filter(
+        \ {'c': 'C', 'javascript': 'JS', 'ruby': 'Ruby', 'xml': 'XML'},
+        \ { k,_ -> index(s:context_include, k) != -1 }
+        \ )
 endif
 
+syn iskeyword @,48-57,a-z,A-Z,192-255
+
 syn spell   toplevel
 
-syn match   contextBlockDelim display '\\\%(start\|stop\)\a\+'
-                              \ contains=@NoSpell
+" ConTeXt options, i.e., [...] blocks
+syn region  contextOptions    matchgroup=contextDelimiter start='\['  end=']\|\ze\\stop' skip='\\\[\|\\\]' contains=ALLBUT,contextBeginEndLua,@Spell
 
-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='>>'
+" Highlight braces
+syn match   contextDelimiter  '[{}]'
+
+" Comments
+syn match   contextComment '\\\@<!\%(\\\\\)*\zs%.*$' display contains=initexTodo
+syn match   contextComment '^\s*%[CDM].*$'           display contains=initexTodo
+
+syn match   contextBlockDelim '\\\%(start\|stop\)\a\+' contains=@NoSpell
+
+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='>>'
 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 region  contextEscaped    matchgroup=contextPreProc start='\\\h\+Type\%(\s\|\n\)*{' end='}'
+syn region  contextEscaped    matchgroup=contextPreProc start='\\Typed\h\+\%(\s\|\n\)*{' end='}'
 
 syn match   contextBuiltin    display contains=@NoSpell
-      \ '\\\%(unprotect\|protect\|unexpanded\)' 
+      \ '\\\%(unprotect\|protect\|unexpanded\)\>'
 
-syn match   contextPreProc    '^\s*\\\%(start\|stop\)\=\%(component\|environment\|project\|product\).*$'
+syn match   contextPreProc    '^\s*\\\%(start\|stop\)\=\%(component\|environment\|project\|product\)\>'
                               \ contains=@NoSpell
 
-if index(g:context_include, 'mp') != -1
+if get(b:, 'context_metapost', get(g:, 'context_metapost', 1))
+  let b:mp_metafun_macros = 1 " Highlight MetaFun keywords
   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\)\).*'
+  syn region  contextMPGraphic  matchgroup=contextBlockDelim
+                                \ start='\\start\z(MP\%(clip\|code\|definitions\|drawing\|environment\|extensions\|inclusions\|initializations\|page\|\)\)\>.*$'
                                 \ end='\\stop\z1'
-                                \ contains=@mpTop
+                                \ 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
 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
+if get(b:, 'context_lua', get(g:, 'context_lua', 1))
+  syn include @luaTop          syntax/lua.vim
+  unlet b:current_syntax
 
-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 region  contextLuaCode    matchgroup=contextBlockDelim
+                                \ start='\\startluacode\>'
+                                \ end='\\stopluacode\>' keepend
+                                \ contains=@luaTop,@NoSpell
 
-syn match   contextSectioning '\\chapter\>' contains=@NoSpell
-syn match   contextSectioning '\\\%(sub\)*section\>' contains=@NoSpell
+  syn match   contextDirectLua  "\\\%(directlua\|ctxlua\)\>\%(\s*%.*$\)\="
+                                \ nextgroup=contextBeginEndLua skipwhite skipempty
+                                \ contains=initexComment
+  syn region  contextBeginEndLua matchgroup=contextSpecial
+                                \ start="{" end="}" skip="\\[{}]"
+                                \ contained contains=@luaTop,@NoSpell
+endif
+
+for synname in keys(s:context_include)
+  execute 'syn include @' . synname . 'Top' 'syntax/' . synname . '.vim'
+  unlet b:current_syntax
+  execute 'syn region context' . s:context_include[synname] . 'Code'
+        \ 'matchgroup=contextBlockDelim'
+        \ 'start=+\\start' . s:context_include[synname] . '+'
+        \ 'end=+\\stop' . s:context_include[synname] . '+'
+        \ 'contains=@' . synname . 'Top,@NoSpell'
+endfor
+
+syn match   contextSectioning '\\\%(start\|stop\)\=\%(\%(sub\)*section\|\%(sub\)*subject\|chapter\|part\|component\|product\|title\)\>'
+                              \ contains=@NoSpell
 
 syn match   contextSpecial    '\\crlf\>\|\\par\>\|-\{2,3}\||[<>/]\=|'
                               \ contains=@NoSpell
@@ -92,15 +121,19 @@
 syn match   contextFont       '\\\%(tf\|b[si]\|s[cl]\|os\)\%(xx\|[xabcd]\)\=\>'
                               \ contains=@NoSpell
 
+hi def link contextOptions    Typedef
+hi def link contextComment    Comment
 hi def link contextBlockDelim Keyword
 hi def link contextBuiltin    Keyword
 hi def link contextDelimiter  Delimiter
+hi def link contextEscaped    String
 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
+hi def link contextDirectLua  Keyword
 
 let b:current_syntax = "context"
 
