@@ -682,7 +682,11 @@ function! dispatch#compiler_options(compiler) abort
682682 return {' program' : ' make' , ' format' : &errorformat }
683683 endif
684684 let &l: makeprg = ' '
685- execute ' compiler ' .dispatch#fnameescape (a: compiler )
685+ try
686+ execute ' compiler' dispatch#fnameescape (a: compiler )
687+ catch /^Vim(compiler):E666:/
688+ return {}
689+ endtry
686690 let options = {' format' : &errorformat }
687691 if ! empty (&l: makeprg )
688692 let options .program = &l: makeprg
@@ -858,8 +862,12 @@ function! dispatch#compile_command(bang, args, count, mods, ...) abort
858862 \ }, ' keep' )
859863
860864 if executable == # ' _' || executable == # ' --'
861- if has_key (request, ' compiler' )
862- call extend (request, dispatch#compiler_options (request.compiler ))
865+ if ! empty (get (request, ' compiler' , ' ' ))
866+ let compiler_options = dispatch#compiler_options (request.compiler )
867+ if ! has_key (compiler_options, ' program' )
868+ return ' compiler ' . dispatch#fnameescape (request.compiler )
869+ endif
870+ call extend (request, compiler_options)
863871 else
864872 let request.compiler = s: current_compiler ()
865873 let request.program = &makeprg
@@ -871,7 +879,11 @@ function! dispatch#compile_command(bang, args, count, mods, ...) abort
871879 let [compiler , prefix, program, rest] = s: compiler_split (args )
872880 let request.compiler = get (request, ' compiler' , compiler )
873881 if ! empty (request.compiler )
874- call extend (request,dispatch#compiler_options (request.compiler ))
882+ let compiler_options = dispatch#compiler_options (request.compiler )
883+ if ! has_key (compiler_options, ' program' )
884+ return ' compiler ' . dispatch#fnameescape (request.compiler )
885+ endif
886+ call extend (request, compiler_options)
875887 if request.compiler == # compiler
876888 let request.program = prefix . program
877889 let request.args = rest[1 :-1 ]
0 commit comments