Newsletter #4 - Thanksvimming Day

November 2014

The way to “win” at open source is to be consistent and steady.

Welcome to the fourth newsletter for Neovim, the project that aims to overhaul the Vim code base. It also hopes to provide out of the box features yet a more powerful interface for extending the editor.

General News

Show off your Love

You can now add a Neovim sticker to your laptop by heading over to the Neovim section of Unixstickers.

Unixstickers will be donating a portion of the profits to ICCF Holland in support of Bram Moolenar’s work on Vim.

Seeing Stars

The last newsletter detailed how Neovim reached 1,000 issues/pull requests on its GitHub repository.

During the last two months, the repo reached over 10,000 stargazers on Github. The repository also just tipped over the 100 person contributor mark.

Floobits Approved

Floobits, a service that integrates with editors to make it easier to write code together, has deprecated its Vim plugin in favor of a plugin for Neovim.

Already Floobits says that the new plugin “has fewer bugs and performs better” than their previous plugin. Read their entire write up to learn more about their thoughts or view the repository to see the code.

VimConf 2014 in Japan

Vim-jp held their annual VimConf conference over the weekend of November 8th in Tokyo, Japan.

@Shougo, creator of many Vim plugins, gave a talk about his experience and perspective of Neovim so far. Check out the English version of the slides to read his thoughts.

Development News

Refactored Plugin System

@tarruda finished his pull request that did two things. It gave the initial implementation of remote plugins which are going to be plugins that run in external processes and communicate to Nvim through msgpack-rpc. Details can be found in :h remote-plugin.

The second change is an improvement to the existing provider infrastructure to allow providers to be implemented in VimScript. This gives more flexibility as previously providers needed to be implemented using msgpack. More details for this can be found in the :h nvim-provider.

Note

If you run into issues with this new plugin system, it might be caused by stale files from old builds and/or old configurations.

See this comment and these two subsequent issues for more details: 1 and 2.

Re-enabling iconv

iconv is a library “for use on systems which don’t have one, or whose implementation cannot convert from/to Unicode.”

During the migration to CMake, the macro USE_ICONV was missed which was used to indicate such a system. Thus Neovim never triggered specific encoding conversions when needed.

@aktau has an excellent write up called Neovim: input encoding and you which discusses input encoding in detail and as well as how he discovered this issue. He created a pull request which fixed this and it has been merged into the master branch.

Removing Vim Specific Integer Types (Part 2)

@elmart has returned to continue his past work (1, 2) with removing Vim specific integer types in this pull request. This topic was first covered in the very first newsletter back in June.

The merging of this latest pull request chips away at the long standing refactoring goal by @tarruda to remove all project specific types.

VimL -> Lua and Vim Bug Reports

@ZyX-I is still hard at work on advancing his VimL to Lua translator. More than 80% of Vim commands have been implemented in the parser.

In the process of writing the translator, he has come across various bugs (1, 2, 3, 4, 5). He continues to report them to the vim_dev mailing list as well as contributing patches when possible.

Upstream Vim Patches

Since the last newsletter, a great number of Vim patches have been merged into Neovim.

This work has been done by @splinterofchaos, @Shougo, @mhinz, @NOLFXceptMe, @atwupack, @dkns (sorted by most number of patches ported).

You can view the complete status of the Vim patches within the autogenerated Vim Patch Report on the Neovim website.

Legacy Test Migration Part 1

After @tarruda opened up a master issue discussing legacy test migration, the first legacy test was migrated over by @nate00. @rainerborene then followed up with a batch of conversions and is already working on the next batch.

Previously the legacy tests were ran by launching an instance of Vim with the flag -s <test file> which enables silent mode. This mode reads the lines as if you had typed them. The tests can be ran on nvim by running make oldtest.

The migrations (example test: before and after) are made possible because they are now communicating to Neovim through msgpack-rpc; the same mechanism that UI’s will be using when communicating.

Bug Fixes

Job Activity Bug Fix

@splinterofchaos happened to come across a bug in which a job activity’s output may become corrupted. The rstream structure could contain incomplete lines if the buffer fills up before reaching a '\n' character.

To remedy this @splinterofchaos added logic at the API level to find a new-line character and return it as well. The end result is that a job’s activity is now storing stdout in a list instead of a string. If your code is utilizing a job, you might want to address this.

Signs Bug Fix

@akkartik uncovered a bug with the sign functionality of Nvim.

The sign feature can be used to place an indicator on a given line of a buffer. It will show up on the left side of the editor window. This is used for debuggers, syntax linters, and various other plugins.

The bug caused nvim to not remove signs placed across multiple buffers when using the :sign unplace command.

@akkartik created a pull request to fix this and also went ahead and updated the CONTRIBUTING.md file to include more guidance on cosmetic changes.

Homebrewed Neovim

Neovim has moved its homebrew formula into its own repository in the organization to make it easy to install using a tap instead of just a formula. You can install it now with the following:

$ brew tap neovim/homebrew-neovim
$ brew install --HEAD neovim

To see more, just head over to the new repository: neovim/homebrew-neovim. @colinrymer originally suggested the improvement and @xu-cheng helped the testing and migration.

Marvim the Bot

@Marvim, the Neovim bot that was started by @stefan991, has seen some great improvements by @fwalch.

These improvements include:

Reduced Clang Analyzer Warnings

@elmart has been hard at work reducing the number of warnings from the Clang Static Analyzer. He did so in four different pull requests (1, 2, 3, 4).

Helping Out

Donating

If you’d like to help support development, you may donate using Bitcoins here: 1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQ or back the team on the Neovim Bountysource page.

Contributing

If you are an experienced developer or inexperienced but wanting to learn, visit the GitHub repo and check out the README, CONTRIBUTING guide, and finally the Wiki to learn more.

There are plenty of opportunities to help out and plenty of things to do.

That’s a Wrap

Do you have any feedback or suggestions regarding this newsletter? Feel free to reach out through the Neovim Twitter.

This newsletter cannot cover all of the contributions and support of the community. Thanks to all of the other contributors that have helped in some way during the last two months.

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 roughly two months near the beginning months of the next year.

Until next time. :wq

News

Find more updates in the news archive. There's also an RSS feed.

What is Neovim?

Neovim is a Vim-based text editor engineered for extensibility and usability, to encourage new applications and contributions.

Discuss

Visit #neovim:matrix.org or #neovim on irc.libera.chat to chat with the team.