Minimal, asynchronous quickfix commands for Vim 8.0
git clone git://
Log | Files | Refs | README | LICENSE

commit cc1e0f80ae58345c5ea6e2e1b8466bdb772a68aa
Author: Daniel Moch <>
Date:   Mon, 23 May 2016 05:40:56 -0400

LICENSE and initial (incomplete) draft of README

ALICENSE | 21+++++++++++++++++++++ | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 87 insertions(+), 0 deletions(-)

diff --git a/LICENSE b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Daniel Moch + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/ b/ @@ -0,0 +1,66 @@ +# Neovim MakeJob +I've used [other](/scrooloose/syntastic) [build +solutions](/neomake/neomake) to lint my files, and while they've +worked as advertized, they're not what I would call minimal. Even Tim +Pope's venerable [dispatch.vim](/tpope/vim-dispatch) suffers from +features that I can't seem to figure out. Plus, I've moved to +[Neovim](/neovim/neovim) as my primary editor, and dispatch.vim is +designed with classic [Vim](/vim/vim) in mind. To wit, Neovim offers +asynchronous jobs out of the box, so tpope's clever dispatch methods are +no longer necessary. + +With minimalism as a goal, I've done my best with _MakeJob_ to implement +asynchronous `:make` and `:lmake` for Neovim. That's all _MakeJob_ does, +and that's all I intend for it to do. It will not configure compiler +settings for you. Neovim (like Vim before it) already gives you +everything you need to do that work automatically (i.e. `autocmd`). + +## Goals +1. Implement a minimal solution for asynchronous `:make` and `:lmake`. + No unnecessary features. +2. Let Neovim be Neovim. Use compiler plugins to configure our builders. + +## TODO - Installation +Pathogen +Vundle + +Most other plugin managers will resemble one of these two. + +## Usage +### The Short Version +Neovim has `:make` and `:lmake`. Replace those calls with `:MakeJob` and +`:LmakeJob`. Call it a day. + +### The Less Short Version +With no prior configuration, `:make` will run the `make` program with no +arguments, and populate the Quickfix list with any errors the process +encounters. It's possible to change that behavior in one of two ways. +The hard way is to manually use `:set makeprg` to change the program to +something else, and _then_ use `:set errorformat` to configure the +format of the errors to look for. This gets pretty hairy, and so +everyone is better off trying to avoid this in favor of the easy way: +compiler plugins. + +__TODO - Describe Compilers__ + +## Automatic Configuration +I alluded earlier to the possibility of using `autocmd` to set your +compiler automatically. Just for the sake of completeness, an example of +that trick would like like this: + +`autocmd! FileType python compiler pylint` + +Add that line to your `init.vim` and you're good to go for Python files +(assuming you have a pylint compiler which hey, if you need one I've +[got you covered](/djmoch/vim-compiler)). + +## Neovim Documentation +If any of what I discuss above doesn't make sense, then take a look at +the help documentation in Neovim. Of particular interest will probably +be the following: + +1. `:h make` +2. `:h makeprg` +3. `:h errorformat` +4. `:h compiler` +5. `:h quickfix`