15 lines
550 B
Plaintext
15 lines
550 B
Plaintext
|
function! s:Make(dir, make, format, name) abort
|
||
|
let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd' : 'cd'
|
||
|
let cwd = getcwd()
|
||
|
let [mp, efm, cc] = [&l:mp, &l:efm, get(b:, 'current_compiler', '')]
|
||
|
try
|
||
|
execute cd fnameescape(dir)
|
||
|
let [&l:mp, &l:efm, b:current_compiler] = [a:make, a:format, a:compiler]
|
||
|
execute (exists(':Make') == 2 ? 'Make' : 'make')
|
||
|
finally
|
||
|
let [&l:mp, &l:efm, b:current_compiler] = [mp, efm, cc]
|
||
|
if empty(cc) | unlet! b:current_compiler | endif
|
||
|
execute cd fnameescape(cwd)
|
||
|
endtry
|
||
|
endfunction
|