Наличен е Neovim 0.5, модернизирана версия на редактора Vim

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

Един от проблемите с 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.

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

  • Добавен е вграден LSP клиент (Language Server Protocol) в Lua, който може да се използва за свързване към външни услуги за анализ и допълване на код.
  • Добавен API за контрол на дизайна на буферите за разпределение.
  • Добавен API за използване на разширени тагове за проследяване на промените на ниво байт.
  • Разширена поддръжка за Lua като език за разработка на плъгини и управление на конфигурацията.
  • Добавена е експериментална поддръжка за машината за разбор на дървогледач.

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

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