Lansarea Neovim 0.7.0, o versiune modernizată a editorului Vim

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

Una dintre problemele cu Vim care a determinat crearea lui Neovim a fost baza sa de cod umflată, monolitică, constând din peste 300 de mii de linii de cod C (C89). Doar puțini oameni înțeleg toate nuanțele bazei de cod Vim și toate modificările sunt controlate de un singur întreținător, ceea ce face dificilă întreținerea și îmbunătățirea editorului. În loc de codul încorporat în nucleul Vim pentru a sprijini GUI, Neovim propune utilizarea unui strat universal care vă permite să creați interfețe folosind diverse seturi de instrumente.

Pluginurile pentru Neovim sunt lansate ca procese separate, pentru interacțiunea cu care se folosește formatul MessagePack. Interacțiunea cu pluginurile se realizează asincron, fără a bloca componentele de bază ale editorului. Pentru a accesa pluginul, se poate folosi un socket TCP, de ex. pluginul poate fi rulat pe un sistem extern. În același timp, Neovim rămâne compatibil cu Vim, continuă să accepte Vimscript (Lua este oferit ca alternativă) și acceptă conexiuni pentru majoritatea pluginurilor Vim standard. Caracteristicile avansate ale Neovim pot fi utilizate în pluginuri create folosind API-uri specifice Neovim.

În prezent, aproximativ 130 de plugin-uri specifice au fost deja pregătite, sunt disponibile legături pentru crearea de plugin-uri și implementarea interfețelor folosind diverse limbaje de programare (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) și cadre (Qt, ncurses, Node .js, Electron, GTK). Mai multe opțiuni de interfață cu utilizatorul sunt în curs de dezvoltare. Suplimentele GUI seamănă mult cu pluginurile, dar spre deosebire de pluginuri, acestea inițiază apeluri la funcțiile Neovim, în timp ce pluginurile sunt apelate din interiorul Neovim.

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

Sursa: opennet.ru

Adauga un comentariu