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

Беше пуснат Neovim 0.6.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.

Някои от промените в новата версия:

  • Към 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 е преустановена.

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

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