Neovim 0.4 is available, a modernized version of the Vim editor

Published Release Neovim 0.4, forks from the Vim editor, focused to increase scalability and flexibility. Original developments of the project extend under the Apache 2.0 license, and the base part under the Vim license.

For more than five years, the Neovim project has been reworking the Vim codebase, as a result of which changes are made that simplify code maintenance, provide tools for the division of labor between several maintainers, separate the interface from the base part (the interface can be changed without touching the internals) and implement a new extensible architecture based on plugins.

One of the Vim problems that prompted the creation of Neovim is a bloated, monolithic codebase of over 300 lines of C code (C89). Only a few people understand all the nuances of the Vim codebase, and all changes are controlled by one maintainer, which makes it difficult to maintain and work on improving the editor. Instead of the code built into the Vim core to support the GUI, Neovim proposes to use a universal layer that allows you to create interfaces using various toolkits.

Plugins for Neovim are launched as separate processes, for interaction with which the MessagePack format is used. Interaction with plug-ins is performed in asynchronous mode, without blocking the basic components of the editor. A TCP socket can be used to access the plugin, i.e. the plugin can run on an external system. At the same time, Neovim remains backwards compatible with Vim, continues to support Vimscript (Lua is offered as an alternative) and supports the connection of most regular Vim plugins. The advanced features of Neovim can be used in plugins built using the Neovim-specific API.

Currently already prepared about 80 specific plugins, bindings are available for creating plugins and interface implementations using various programming languages ​​(C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) and frameworks (Qt5, ncurses, Node.js, Electron, GTK+). Several user interface options are being developed. GUI add-ons are similar to plugins in many ways, but unlike plugins, they initiate calls to Neovim functions, while plugins are called from within Neovim.

Some of the changes in new version:

  • A large portion of new API functions and user interface events have been added.
  • Added new Nvim-Lua standard library for Lua plugin development.
  • Continued development of the user interface protocol that updates information on the screen at the line level, rather than individual characters.
  • Added support for full-fledged floating windows that can be placed in an arbitrary place, attached, linked to separate edit buffers, grouped in Multigrid mode.
  • Added 'pumblend' option for translucent dropdown menus.

Source: opennet.ru

Add a comment