No marco do proxecto Neovim, a base de código Vim leva máis de cinco anos sendo reelaborada, como resultado do cal se realizan cambios que simplifican o mantemento do código, proporcionan un medio para dividir o traballo entre varios mantedores, separan a interface do parte base (a interface pódese cambiar sen tocar as partes internas) e implementar unha nova
Un dos problemas de Vim que provocou a creación de Neovim foi a súa base de código monolítica e inchada, formada por máis de 300 mil liñas de código C (C89). Só unhas poucas persoas entenden todos os matices da base de código de Vim e todos os cambios están controlados por un mantedor, o que dificulta o mantemento e mellora do editor. En lugar do código integrado no núcleo de Vim para admitir a GUI, Neovim propón usar unha capa universal que che permita crear interfaces usando varios conxuntos de ferramentas.
Os complementos para Neovim lánzanse como procesos separados, para a interacción cos que se usa o formato MessagePack. A interacción cos complementos realízase de forma asíncrona, sen bloquear os compoñentes básicos do editor. Para acceder ao complemento pódese usar un socket TCP, é dicir. o complemento pódese executar nun sistema externo. Ao mesmo tempo, Neovim segue sendo compatible con Vim, segue admitindo Vimscript (ofrece Lua como alternativa) e admite conexións para a maioría dos complementos estándar de Vim. As funcións avanzadas de Neovim pódense usar en complementos creados mediante API específicas de Neovim.
Actualmente xa
Algúns dos cambios en
- Engadíronse unha gran parte de novas funcións da API e eventos da interface de usuario.
- Engadiuse unha nova biblioteca estándar Nvim-Lua para desenvolver complementos na linguaxe Lua.
- O desenvolvemento do protocolo de interface de usuario continúa, actualizando a información na pantalla a nivel de liñas, en lugar de caracteres individuais.
- Engadido soporte para fiestras flotantes completas, que se poden colocar en calquera lugar, anexar, ligar a búfers de edición individuais e agruparse en modo Multigrid.
- Engadiuse a opción "pumblend" para os menús despregables translúcidos.
Fonte: opennet.ru