vim-patch:9.1.1158: :verbose set has wrong file name with :compiler! (#32682)

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

closes: vim/vim#16752

5e8b2268e1
This commit is contained in:
zeertzjq
2025-03-01 07:45:47 +08:00
committed by GitHub
parent 7b4295390f
commit 45d7aa3301
2 changed files with 27 additions and 2 deletions

View File

@@ -734,7 +734,7 @@ void ex_compiler(exarg_T *eap)
if (eap->forceit) {
// ":compiler! {name}" sets global options
do_cmdline_cmd("command -nargs=* CompilerSet set <args>");
do_cmdline_cmd("command -nargs=* -keepscript CompilerSet set <args>");
} else {
// ":compiler! {name}" sets local options.
// To remain backwards compatible "current_compiler" is always

View File

@@ -20,12 +20,14 @@ func Test_compiler()
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!
@@ -39,6 +41,29 @@ func Test_compiler()
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')