Пускане на Neovim 0.7.0, модернизирана версия на редактора Vim

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

Един от проблемите с Vim, който подтикна създаването на Neovim, беше неговата раздута, монолитна кодова база, състояща се от повече от 300 хиляди реда C (C89) код. Само няколко души разбират всички нюанси на кодовата база на Vim и всички промени се контролират от един поддържащ, което затруднява поддържането и подобряването на редактора. Вместо кода, вграден в ядрото на Vim за поддръжка на GUI, Neovim предлага използването на универсален слой, който ви позволява да създавате интерфейси с помощта на различни набори от инструменти.

Добавките за Neovim се стартират като отделни процеси, за взаимодействие с които се използва форматът MessagePack. Взаимодействието с плъгини се извършва асинхронно, без да се блокират основните компоненти на редактора. За достъп до плъгина може да се използва TCP сокет, т.е. плъгинът може да се изпълнява на външна система. В същото време Neovim остава обратно съвместим с Vim, продължава да поддържа Vimscript (Lua се предлага като алтернатива) и поддържа връзки за повечето стандартни Vim добавки. Разширените функции на Neovim могат да се използват в добавки, изградени с помощта на специфични за Neovim API.

В момента вече са подготвени около 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), който може да се използва за прехвърляне на логиката на анализа и допълването на кода към външни сървъри.

Източник: opennet.ru

Добавяне на нов коментар