aboutsummaryrefslogtreecommitdiff
path: root/vim/autoload/compiler.vim
blob: b4bf66b6eca0004b77ed923b0ef73de963d89859 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
" Run a compiler check (:lmake, :lwindow) without trampling over previous
" settings, by temporarily loading the compiler with the given name
function! compiler#Make(compiler) abort

  " Save the given compiler or failing that the current 'makeprg' and
  " 'errorformat' values
  if exists('b:current_compiler')
    let l:save_compiler = b:current_compiler
  else
    let l:save_makeprg = &makeprg
    let l:save_errorformat = &errorformat
  endif

  " Choose the compiler
  execute 'compiler ' . a:compiler

  " Run the 'makeprg' with results in location list
  lmake!

  " If we saved a compiler, switch back to it, otherwise restore the previous
  " values for 'makeprg' and 'errorformat'
  if exists('l:save_compiler')
    execute 'compiler ' . l:save_compiler
  else
    unlet! b:current_compiler
    let &l:makeprg = l:save_makeprg
    let &l:errorformat = l:save_errorformat
  endif

  " Show location list
  lwindow

endfunction