Vydanie Neovim 0.7.0, modernizovaná verzia editora Vim

Опубликован релиз Neovim 0.7.0, ответвления от редактора Vim, сфокусированного на повышении расширяемости и гибкости. В рамках проекта уже более семи лет проводится переработка кодовой базы Vim, в результате которой вносятся изменения, упрощающие сопровождение кода, предоставляющие средства разделения труда между несколькими мэйнтейнерами, отделяющие интерфейс от базовой части (интерфейс можно менять не трогая внутренности) и реализующие новую расширяемую архитектуру на основе плагинов. Оригинальные наработки проекта распространяются под лицензией Apache 2.0, а базовая часть под лицензией Vim. Готовые сборки подготовлены для Linux (appimage), Windows и macOS.

Jedným z problémov Vimu, ktorý podnietil vytvorenie Neovimu, bola jeho nafúknutá, monolitická kódová základňa pozostávajúca z viac ako 300 tisíc riadkov kódu C (C89). Len málo ľudí rozumie všetkým nuansám kódovej základne Vim a všetky zmeny riadi jeden správca, čo sťažuje údržbu a vylepšovanie editora. Namiesto kódu zabudovaného do jadra Vim na podporu GUI, Neovim navrhuje použitie univerzálnej vrstvy, ktorá vám umožňuje vytvárať rozhrania pomocou rôznych súprav nástrojov.

Pluginy pre Neovim sa spúšťajú ako samostatné procesy, na interakciu s ktorými sa používa formát MessagePack. Interakcia s pluginmi prebieha asynchrónne, bez blokovania základných komponentov editora. Pre prístup k pluginu je možné použiť TCP socket, t.j. plugin je možné spustiť na externom systéme. Zároveň zostáva Neovim spätne kompatibilný s Vim, naďalej podporuje Vimscript (Lua sa ponúka ako alternatíva) a podporuje pripojenia pre väčšinu štandardných doplnkov Vim. Pokročilé funkcie Neovimu možno použiť v zásuvných moduloch vytvorených pomocou API špecifických pre Neovim.

В настоящее время уже подготовлено около 130 специфичных плагинов, доступны биндинги для создания плагинов и реализаций интерфейсов с использованием различных языков программирования (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) и фреймворков (Qt, ncurses, Node.js, Electron, GTK). Развивается несколько вариантов пользовательского интерфейса. GUI-надстройки во многом напоминают плагины, но, в отличие от плагинов, они инициируют вызов функций Neovim, в то время как плагины вызываются из Neovim.

В новой версии предложена начальная поддержка удалённой работы, позволяющая запустить Neovim на сервере и подключаться к нему с клиентской системы, используя отдельный ui_client. Среди других изменений: прекращена поддержка Python 2, разрешено использовании Lua-функций в keymap, добавлены новые команды в API, значительно расширены возможности по использованию языка Lua для разработки плагинов и управления конфигурацией, улучшены средства диагностики проблем в коде, добавлена поддержка глобальной строки состояния, проведены оптимизации производительности. Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы.

Zdroj: opennet.ru

Pridať komentár