Lançamento do Neovim 0.6.0, uma versão modernizada do editor Vim

Foi lançado o Neovim 0.6.0, um fork do editor Vim focado em aumentar a extensibilidade e flexibilidade. O projeto vem reformulando a base de código do Vim há mais de sete anos, como resultado das mudanças que simplificam a manutenção do código, fornecem um meio de dividir o trabalho entre vários mantenedores, separam a interface da parte base (a interface pode ser alterado sem tocar nos componentes internos) e implementar uma nova arquitetura extensível baseada em plugins. Os desenvolvimentos originais do projeto são distribuídos sob a licença Apache 2.0, e a parte básica é distribuída sob a licença Vim. Montagens prontas são preparadas para Linux (appimage), Windows e macOS.

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á foram elaborados cerca de 130 plugins específicos, estão disponíveis bindings para criação de plugins e implementação de interfaces utilizando diversas linguagens de programação (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) e frameworks (Qt, ncurses, Node .js, Electron, GTK). Várias opções de interface de usuário estão sendo desenvolvidas. Os complementos da GUI são muito parecidos com os plug-ins, mas, diferentemente dos plug-ins, eles iniciam chamadas para funções do Neovim, enquanto os plug-ins são chamados de dentro do Neovim.

Algumas das mudanças na nova versão:

  • O suporte para variáveis ​​locais foi adicionado aos scripts vim, cujo escopo é limitado apenas pelo script atual.
  • Suporte à linguagem Lua significativamente melhorado para desenvolvimento de plugins e gerenciamento de configuração. Nos scripts vim, a capacidade de chamar funções Lua como métodos foi adicionada especificando o prefixo v:lua (por exemplo, “arg1->v:lua.somemod.func(arg2)”).
  • Os recursos do cliente LSP integrado (Language Server Protocol) foram expandidos, que podem ser usados ​​para transferir a lógica de análise e a conclusão de código para servidores externos. O uso do LSP permite usar mais de 150 manipuladores prontos para diversas linguagens de programação preparados para o editor Visual Studio Code.
  • Ferramentas aprimoradas para diagnosticar problemas no código. Adicionada a capacidade de exibir o texto de mensagens de diagnóstico e janelas flutuantes com código associado a tais mensagens. É fornecido o processamento de mensagens de diagnóstico transmitidas pelo servidor LSP.
  • Adicionado suporte para strings virtuais, que podem ser usadas, por exemplo, para exibir blocos com informações de serviço.
  • Várias otimizações de desempenho foram feitas, por exemplo, uma tabela hash está habilitada para nomes de grupos destacados.
  • O suporte para Windows 7 e versões de 32 bits do Windows foi descontinuado.

Fonte: opennet.ru

Adicionar um comentário