runtime(compilers): ensure compiler! sets global options (#14336)

Previously some options were only set locally by
&l:makeprg/errorformat

This suffices for :compiler (without a trailing bang)
but falls short for :compiler! that sets &g:makeprg/errorformat as
well

Also apply kind suggestions by @dkearns and @lifepillar 

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/compiler/context.vim b/runtime/compiler/context.vim
index f600936..512f81c 100644
--- a/runtime/compiler/context.vim
+++ b/runtime/compiler/context.vim
@@ -3,7 +3,8 @@
 # Language:           ConTeXt typesetting engine
 # Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
 # Former Maintainers: Nikolai Weibull <now@bitwi.se>
-# Latest Revision:    2023 Dec 26
+# Contributors:       Enno Nagel
+# Last Change:        2024 Mar 29
 
 if exists("g:current_compiler")
   finish
@@ -19,7 +20,8 @@
 
 if get(b:, 'context_ignore_makefile', get(g:, 'context_ignore_makefile', 0)) ||
   (!filereadable('Makefile') && !filereadable('makefile'))
-  &l:makeprg =  join(context.ConTeXtCmd(shellescape(expand('%:p:t'))), ' ')
+  var makeprg =  join(context.ConTeXtCmd(shellescape(expand('%:p:t'))), ' ')
+  execute 'CompilerSet makeprg=' .. escape(makeprg, ' ')
 else
   g:current_compiler = 'make'
 endif