diff --git a/runtime/compiler/context.vim b/runtime/compiler/context.vim
index cb78c96..4cabf14 100644
--- a/runtime/compiler/context.vim
+++ b/runtime/compiler/context.vim
@@ -1,54 +1,48 @@
-" Vim compiler file
-" Compiler:     ConTeXt typesetting engine
-" Maintainer:   Nicola Vitacolonna <nvitacolonna@gmail.com>
-" Last Change:  2016 Oct 21
+vim9script
 
-if exists("current_compiler")
+# Language:           ConTeXt typesetting engine
+# Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
+# Former Maintainers: Nikolai Weibull <now@bitwi.se>
+# Latest Revision:    2022 Aug 12
+
+if exists("g:current_compiler")
   finish
 endif
-let s:keepcpo= &cpo
-set cpo&vim
 
-if exists(":CompilerSet") != 2    " older Vim always used :setlocal
+import autoload '../autoload/context.vim'
+
+if exists(":CompilerSet") != 2 # Older Vim always used :setlocal
   command -nargs=* CompilerSet setlocal <args>
 endif
 
-" If makefile exists and we are not asked to ignore it, we use standard make
-" (do not redefine makeprg)
+g:current_compiler = 'context'
+
 if get(b:, 'context_ignore_makefile', get(g:, 'context_ignore_makefile', 0)) ||
-      \ (!filereadable('Makefile') && !filereadable('makefile'))
-  let current_compiler = 'context'
-  " The following assumes that the current working directory is set to the
-  " directory of the file to be typeset
-  let &l:makeprg = get(b:, 'context_mtxrun', get(g:, 'context_mtxrun', 'mtxrun'))
-        \ . ' --script context --autogenerate --nonstopmode --synctex='
-        \ . (get(b:, 'context_synctex', get(g:, 'context_synctex', 0)) ? '1' : '0')
-        \ . ' ' . get(b:, 'context_extra_options', get(g:, 'context_extra_options', ''))
-        \ . ' ' . shellescape(expand('%:p:t'))
+  (!filereadable('Makefile') && !filereadable('makefile'))
+  &l:makeprg =  join(context.ConTeXtCmd(shellescape(expand('%:p:t'))), ' ')
 else
-  let current_compiler = 'make'
+  g:current_compiler = 'make'
 endif
 
-let b:context_errorformat = ''
-      \ . '%-Popen source%.%#> %f,'
-      \ . '%-Qclose source%.%#> %f,'
-      \ . "%-Popen source%.%#name '%f',"
-      \ . "%-Qclose source%.%#name '%f',"
-      \ . '%Etex %trror%.%#mp error on line %l in file %f:%.%#,'
-      \ . 'tex %trror%.%#error on line %l in file %f: %m,'
-      \ . '%Elua %trror%.%#error on line %l in file %f:,'
-      \ . '%+Emetapost %#> error: %#,'
-      \ . '! error: %#%m,'
-      \ . '%-C %#,'
-      \ . '%C! %m,'
-      \ . '%Z[ctxlua]%m,'
-      \ . '%+C<*> %.%#,'
-      \ . '%-C%.%#,'
-      \ . '%Z...%m,'
-      \ . '%-Zno-error,'
-      \ . '%-G%.%#' " Skip remaining lines
+const context_errorformat = join([
+  "%-Popen source%.%#> %f",
+  "%-Qclose source%.%#> %f",
+  "%-Popen source%.%#name '%f'",
+  "%-Qclose source%.%#name '%f'",
+  "tex %trror%.%#error on line %l in file %f: %m",
+  "%Elua %trror%.%#error on line %l in file %f:",
+  "%+Emetapost %#> error: %#",
+  "%Emetafun%.%#error: %m",
+  "! error: %#%m",
+  "%-C %#",
+  "%C! %m",
+  "%Z[ctxlua]%m",
+  "%+C<*> %.%#",
+  "%-C%.%#",
+  "%Z...%m",
+  "%-Zno-error",
+  "%-G%.%#"], ",")
 
-execute 'CompilerSet errorformat=' . escape(b:context_errorformat, ' ')
+execute 'CompilerSet errorformat=' .. escape(context_errorformat, ' ')
 
-let &cpo = s:keepcpo
-unlet s:keepcpo
+# vim: sw=2 fdm=marker
