Lanzamento de Neovim 0.6.0, unha versión modernizada do editor Vim

Lanzouse Neovim 0.6.0, un fork do editor de Vim centrado en aumentar a extensibilidade e flexibilidade. O proxecto leva máis de sete anos reelaborando a base de código Vim, como resultado dos cales se realizan cambios que simplifican o mantemento do código, proporcionan un medio para dividir o traballo entre varios mantedores, separan a interface da parte base (a interface pódese cambiado sen tocar as partes internas) e implementar unha nova arquitectura extensible baseada en complementos. Os desenvolvementos orixinais do proxecto distribúense baixo a licenza Apache 2.0 e a parte básica distribúese baixo a licenza Vim. Os conxuntos preparados están preparados para Linux (appimage), Windows e macOS.

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 se prepararon uns 130 complementos específicos, hai conexións dispoñibles para crear complementos e implementar interfaces usando varias linguaxes de programación (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) e frameworks (Qt, ncurses, Node .js, Electron, GTK). Estase a desenvolver varias opcións de interface de usuario. Os complementos da GUI son similares aos complementos en moitos aspectos, pero a diferenza dos complementos, inician chamadas a funcións de Neovim, mentres que os complementos son chamados dende Neovim.

Algúns dos cambios na nova versión:

  • В vim-скрипты добавлена поддержка локальных переменных, область видимости для которых ограничена только текущим скриптом.
  • Значительно улучшена поддержка языка Lua для разработки плагинов и управления конфигурацией. В vim-скриптах добавлена возможность вызова Lua-функций как методов через указание префикса v:lua (например, «arg1->v:lua.somemod.func(arg2)»).
  • Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы. Применение LSP позволяет использовать более 150 готовых обработчиков для различных языков программирования, подготовленных для редактора кода Visual Studio Code.
  • Улучшены средства диагностики проблем в коде. Добавлена возможность вывода текста диагностических сообщений и плавающих окон с кодом, связанным с подобными сообщениями. Обеспечена обработка диагностических сообщений, передаваемых LSP-сервером.
  • Добавлена поддержка виртуальных строк, которые могут использоваться, например, для вывода блоков со служебной информацией.
  • Внесены различные оптимизации производительности, например, задействована хэш таблица для подсвечиваемых имён групп.
  • Прекращена поддержка Windows 7 и 32-разрядных сборок для Windows.

Fonte: opennet.ru

Engadir un comentario