aboutsummaryrefslogtreecommitdiff
path: root/vim/autoload/compiler.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/autoload/compiler.vim')
-rw-r--r--vim/autoload/compiler.vim33
1 files changed, 33 insertions, 0 deletions
diff --git a/vim/autoload/compiler.vim b/vim/autoload/compiler.vim
new file mode 100644
index 00000000..b4bf66b6
--- /dev/null
+++ b/vim/autoload/compiler.vim
@@ -0,0 +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!
+
+ " 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