Welcome to the third (and delayed) newsletter for Neovim, the project that aims to overhaul the Vim codebase.
The next newsletter will be coming out near the beginning of November. It has changed to be every other month as to not overload any sensitive Neovim lovers with too much staggering awe.
The Issue tracker on GitHub now has over 1,000 issues/pull requests. The lucky 1000th pull request was opened shortly before August.
As mentioned in last July’s newsletter, the documentation has successfully been moved to neovim.io/doc/.
It features some general documenation links as well as some more specific reports directed towards developers and contributors. These reports have already helped developers contribute and improve the codebase.
In no particular order, here are the top stories in the last two months.
This issue was mentioned in the June newsletter on things that were yet to come.
@aktau has finished implementing the VimL
system() function to use
pipes and the job system instead of redirecting to temporary files. The change
provides a nice speed boost and avoids some permission issues (mainly affecting
Windows, which is not supported yet).
The slowness of the old implementation of
system() was especially noticeable
when the called process had large output. An example of this is:
The previous implementation was using
gettimeofday(). This was a blocker in
getting Neovim to run on Windows (as detailed in the previous section) as this
function wasn’t supported in Windows.
For more info on profiling in Vim, just run
During the start of of the project, the MoonScript vs Lua debate was a widely discussed one.
He also has been working on upgrading the use of msgpack to the latest version, 2.0, which should be merged soon.
Although too copious to detail here, the link above also includes more details on implementation and discussion regarding that.
The function to create temporary files in Neovim needed features that weren’t in libuv.
@Hinidu, one of Neovim’s contributors, sent a pull request to
libuv to add a new function,
uv_fs_mkdtemp. The changes (now part of libuv
version 0.11.27) are being used by Neovim to provide
temporary file/directory creation and the changes work across platforms.
Because the cross-plaform code has been contributed to libuv, all libuv-based projects can benefit from the changes.
Back on April 9th, the first bounty on Neovim’s
Bountysource was created. The request was to port an existing
patch that was written by Christian Brabandt from Vim to Neovim. The patch gives
breakindent option that will match the indentation when a line is wrapped.
@fmoralesc created a pull request to claim the bounty. A bit of discussion took place and some revisions were made. Since then they have been merged into the master branch and @fmoralesc has been awarded the bounty!
While still volatile as it evolves, this core functionality includes:
Technically, it uses msgpack-rpc to talk with the client using stdin and stdout.
If you’d like to help support development, you may donate using Bitcoins here:
1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQ or back the team on the Neovim
There are plenty of opportunities to help out and plenty of things to do.
Do you have any feedback or suggestions regarding this third newsletter? Feel free to reach out through the Neovim Twitter.
Also be sure to subscribe to the RSS feed to stay up-to-date on what is happening in the Neovim world. The next newsletter will be released in two months near the beginning of November.
Until next time.