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
							 |