No âmbito do projeto Neovim, a base de código do Vim vem sendo retrabalhada há mais de cinco anos, como resultado das quais são feitas alterações que simplificam a manutenção do código, fornecem um meio de dividir o trabalho entre vários mantenedores, separam a interface do parte base (a interface pode ser alterada sem tocar nas partes internas) e implementar um novo
Um dos problemas do Vim que motivou a criação do Neovim foi sua base de código monolítica e inchada, composta por mais de 300 mil linhas de código C (C89). Apenas algumas pessoas entendem todas as nuances da base de código do Vim, e todas as alterações são controladas por um mantenedor, o que torna difícil manter e melhorar o editor. Em vez do código embutido no núcleo do Vim para suportar a GUI, o Neovim propõe o uso de uma camada universal que permite criar interfaces usando vários kits de ferramentas.
Plugins para Neovim são lançados como processos separados, para interação com os quais o formato MessagePack é usado. A interação com plugins é realizada de forma assíncrona, sem bloquear os componentes básicos do editor. Para acessar o plugin, um soquete TCP pode ser usado, ou seja, o plugin pode ser executado em um sistema externo. Ao mesmo tempo, o Neovim permanece compatível com versões anteriores do Vim, continua a oferecer suporte ao Vimscript (Lua é oferecido como alternativa) e oferece suporte a conexões para a maioria dos plug-ins padrão do Vim. Os recursos avançados do Neovim podem ser usados em plug-ins criados com APIs específicas do Neovim.
Atualmente já
Algumas das mudanças
- Adicionada uma grande parte de novas funções de API e eventos de interface do usuário.
- Adicionada uma nova biblioteca padrão Nvim-Lua para desenvolvimento de plugins na linguagem Lua.
- O desenvolvimento do protocolo de interface do usuário continua, atualizando as informações na tela no nível de linhas, em vez de caracteres individuais.
- Adicionado suporte para janelas flutuantes completas, que podem ser colocadas em qualquer local, anexadas, vinculadas a buffers de edição individuais e agrupadas no modo Multigrid.
- Adicionada opção 'pumblend' para menus suspensos translúcidos.
Fonte: opennet.ru