Newsletter #2 - Perchance to Dream

July 2014

Welcome to the second monthly newsletter for Neovim, the project that dreams to be the next text editor that we’ll all love.

General News

Colorscheme Contest

In the discussion about default Neovim settings, the idea of having a default colorscheme was brought up. A later issue was started to determine what colorscheme would be used.

It was decided that a new colorscheme would be great for Neovim. To do this, the Neovim collaborators will create a contest that will allow submissions of colorschemes. After some time, the submissions will close and then a new Poll will be started to let the community pick the winner.

The winner(s) will be awarded the prize money and their colorschemes will forever be enshrined in distributions of Neovim.

Stay tuned to the Neovim Twitter for when the submission guidelines and process are announced.

Development News

Clarification of Neovim’s License

Concern arose over Neovim using Vim’s license. While the Vim license still applies to the original Vim code, newly written code wasn’t explicitly being addressed and could be relicensed.

The community settled on using Apache 2.0. The license info was then updated and all contributors have been asked to sign a CLA by filling out this document and adding your name to this Wiki page.

Note

This means that if you’ve contributed code before the switch to Apache 2.0, your code is still under the old Vim license. It won’t become part of Apache 2.0 unless you sign the CLA.

Client-side RPC

@tarruda finished his implementation that provides a channel_send_call function that allows code to be ran in other scripting engines such as Python, Ruby, and more.

As @tarruda notes, the code runs in another process, blocks until the client responds, has a 3 second timeout and has a call stack limit of 20.

Various Fixes and Improvements

@tarruda opened a pull request that proposed various fixes and improvements to some of his past work. The changes targeted the jobs API, streams API and lastly the events API. All of these past features were discussed in last month’s newsletter.

These changes included the ability to send large amounts of data through streams, added code for msgpack parsing failures, and an ability to lock onto a set of event sources.

Compiling under Windows

The ability to build Neovim on Windows has been popular and a target for months. The entire discussion can be viewed in this issue.

Recent progress has been made by @equalsraf in his attempt to build Neovim under MinGW.

For help building on other platforms, be sure to check out the newly minted Building Neovim page on the Wiki for all things related to compiling.

Growable Array Additions

Garray.c is a data structure from Vim that provides a “growable array” to the editor. It has been the target of many pull requests in the past.

The latest addition by @philix gives an easier way to append to the array. While garray is still being improved, eventually it will be phased out by a more robust solution.

Fixing VimL Libcall

A function called mch_libcall() was temporarily removed during some of the cleanup. It is called in Vim by using the libcall() function and is used by some plugins.

Discussion started around its temporary removal and how to re-add it to retain compatibility with Vim. @aktau proposed a solution and then created a pull request with the new changes which have since been merged.

Continued File Function Refactoring

In last month’s issue, we talked about the changes to mch_stat calls. This refactoring was continued by @stefan991 to add a new structure that encapsulates st_dev and st_ino of libuv’s uv_stat_t .

Translations

Contributors to Neovim live in countries all over the world. Many native speakers have been busy updating the translations in their native languages.

Translations that already have been updated include German and Brazilian Portuguese. With others like Spanish and Swedish in the works.

Doxygen Theme

@stefan991 customized the Doxygen theme to style it similar to how Neovim.io looks. It was then added to the codebase for future builds.

String Handling

Effort was made to replace vim_strncpy with strlcpy and it was merged in successfully. However there was a bit of fallout from the changes.

In response, @aktau created a master issue to collaborate on the process and discuss the best way forward.

To quote @philix, he summed it up best in his comment:

String handling is really important in a text editor and the current codebase doesn’t have good abstractions for string handling (even though we’ve been slowly improving it). It’s a miracle how much can be accomplished with so little abstraction (and a lot of low level code).

Shape of Things to Come

Documentation on Neovim.io

Neovim’s development documentation that is autogenerated by Doxygen is in the process of being moved to the neovim.io domain.

In addition to that, the user documentation for Neovim is being moved there as well.

To aid in the process, @Marvim, Neovim’s newly appointed resident automaton (aka bot), will be configured to automate the process. Just don’t talk to him about life.

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 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 second 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 around the first Friday of August.