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.
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.
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, 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.
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.
@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
.
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.
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.
@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.
@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.
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.
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.
@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.
@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.
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:
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 Neovim bot that was started by @stefan991, has seen some great improvements by @fwalch.
These improvements include:
@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).
If you’d like to help support development, you may donate using Bitcoins here:
1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQ
or back the team on the Neovim
Bountysource page.
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.
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
Find more updates in the news archive. There's also an RSS feed.
Neovim is a Vim-based text editor engineered for extensibility and usability, to encourage new applications and contributions.
Visit #neovim:matrix.org or #neovim on irc.libera.chat to chat with the team.