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
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
Some of the changes in
- 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