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
 |