aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2018-06-17 12:07:14 +1200
committerTom Ryder <tom@sanctum.geek.nz>2018-06-17 12:07:14 +1200
commit1b5501a233c9449f04951b43adea6330d3394d64 (patch)
treeaf5c7ec4f3c853c98dac3f950ae78e9c8581c4a3
parent670c735799879ae066b9a5249356a4d872514951 (diff)
downloaddotfiles-1b5501a233c9449f04951b43adea6330d3394d64.tar.gz
Refine compiler#Make() function
-rw-r--r--vim/autoload/compiler.vim24
1 files changed, 23 insertions, 1 deletions
diff --git a/vim/autoload/compiler.vim b/vim/autoload/compiler.vim
index 37e46275..b4bf66b6 100644
--- a/vim/autoload/compiler.vim
+++ b/vim/autoload/compiler.vim
@@ -1,11 +1,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!
- lwindow
+
+ " 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