patch 9.1.1158: :verbose set has wrong file name with :compiler!

Problem:  :verbose set has wrong file name with :compiler!
Solution: Add -keepscript (zeertzjq)

closes: #16752

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/test_compiler.vim b/src/testdir/test_compiler.vim
index 99f4724..d86c55f 100644
--- a/src/testdir/test_compiler.vim
+++ b/src/testdir/test_compiler.vim
@@ -17,12 +17,14 @@
   e Xfoo.pl
   " Play nice with other tests.
   defer setqflist([])
+
   compiler perl
   call assert_equal('perl', b:current_compiler)
   call assert_fails('let g:current_compiler', 'E121:')
-
   let verbose_efm = execute('verbose set efm')
   call assert_match('Last set from .*[/\\]compiler[/\\]perl.vim ', verbose_efm)
+  " Not using the global value
+  call assert_notequal('', &l:efm)
 
   call setline(1, ['#!/usr/bin/perl -w', 'use strict;', 'my $foo=1'])
   w!
@@ -36,6 +38,29 @@
   call assert_match('\n \d\+ Xfoo.pl:3: Global symbol "$foo" '
   \ .               'requires explicit package name', a)
 
+  compiler make
+  call assert_fails('let b:current_compiler', 'E121:')
+  call assert_fails('let g:current_compiler', 'E121:')
+  let verbose_efm = execute('verbose set efm')
+  call assert_match('Last set from .*[/\\]compiler[/\\]make.vim ', verbose_efm)
+
+  compiler! perl
+  call assert_equal('perl', b:current_compiler)
+  call assert_equal('perl', g:current_compiler)
+  let verbose_efm = execute('verbose set efm')
+  call assert_match('Last set from .*[/\\]compiler[/\\]perl.vim ', verbose_efm)
+  call assert_equal(verbose_efm, execute('verbose setglobal efm'))
+  " Using the global value
+  call assert_equal('', &l:efm)
+
+  compiler! make
+  call assert_fails('let b:current_compiler', 'E121:')
+  call assert_fails('let g:current_compiler', 'E121:')
+  let verbose_efm = execute('verbose set efm')
+  call assert_match('Last set from .*[/\\]compiler[/\\]make.vim ', verbose_efm)
+  call assert_equal(verbose_efm, execute('verbose setglobal efm'))
+  " Using the global value
+  call assert_equal('', &l:efm)
 
   let &shellslash = save_shellslash
   call delete('Xfoo.pl')