Background Make for GVim
I haven’t used vim’s :make
command much, mostly because I don’t often use compiled languages, and setting :errorformat
correctly for nonstandard programs is a dark, dark art.
Recently I got :make
and :errorformat
working well enough with sbt, so the only remaining problem is that vim completely locks up while the make
task is going. That really sucks, as sbt
can take a good 20 seconds to even just compile and install an android app.
Enter background-make (for GVim only, sorry terminal freaks). It’s not perfect, but for non-pathological makeprg
settings it seems to work very reliably. It adds a :Make
command that does exactly what :make
does, except it does it in the background.
And it tries its very best to not disrupt you - by default, it’ll send a system notification the moment that make
finishes. But it will then wait until you are in either insert or normal mode, at which point it’ll take the opportunity to pop up the error window and restore your cursor position / mode. (It has to wait for normal or insert mode because these are the only ones I can figure out how to restore ;))
It’s implemented by firing off a background make process with the current vim instance’s v:servername
so that it knows where to send the results (thus the GVim requirement). Once complete, it uses --remote-send
to tell the originating vim instance to open the now-complete errorfile
. Oh, and it also requires a python-enabled vim, because vimscript makes me wince.