Gutentags Gets A Job
So event though I spent most of my long Easter week-end doing random cool stuff, I still got to do some nerdy stuff – namely catching up with bugs and feature requests for Gutentags, which is my most popular open-source project to date.
The main new thing is that Gutentags is now using Vim 8’s job API (
job_start() and the like), with a compatibility layer for Neovim’s own, sadly different (but older), job API. This doesn’t make Gutentags any more asynchronous than it was before, since I jumped through hoops to make it work correctly even before, but it does clean up the code in a few places:
- No more need for a
.lockfile that indicates if the background job is running. This means less chance of Gutentags getting “stuck” because the lock file was somehow left behind incorrectly by a previous crash.
- No more need for polling the aforementioned lock file… we can just wait for a job to finish.
- As a corollary of the previous point, it’s now easy to force-refresh Vim’s status line and get real-time, correct indication of whether Gutentags is running in the background or not. See
:help gutentags-status-linefor more information on this.
Because I don’t want to support 2 code paths in the same file, the requirements for Gutentags have been bumped to versions of Vim/Neovim that have the
*jobwait features… if you need to use Gutentags with Vim 7 for some reason, you can stay on the
vim7 branch, which may or may not receive some bug
fixes in the future.