Достапен е Neovim 0.4, модернизирана верзија на уредникот Vim

објавено ослободување Неовим 0.4, вилушка од уредникот Vim, фокусирани на зголемување на растегливоста и флексибилноста. Оригинален развој на проектот ширење под лиценцата Apache 2.0, а основниот дел под лиценцата Vim.

Во рамките на проектот Neovim, базата на кодови Vim се преработува повеќе од пет години, како резултат на што се прават промени кои го поедноставуваат одржувањето на кодот, обезбедуваат средства за поделба на работата помеѓу неколку одржувачи, го одвојуваат интерфејсот од основен дел (интерфејсот може да се смени без допирање на внатрешните делови) и имплементирајте нов растеглива архитектура врз основа на приклучоци.

Еден од проблемите со Vim што го поттикна создавањето на Neovim беше неговата надуена, монолитна база на код, која се состои од повеќе од 300 илјади линии C (C89) код. Само неколку луѓе ги разбираат сите нијанси на базата на кодови Vim, а сите промени се контролирани од еден одржувач, што го отежнува одржувањето и подобрувањето на уредникот. Наместо кодот вграден во јадрото на Vim за поддршка на GUI, Neovim предлага користење на универзален слој кој ви овозможува да креирате интерфејси користејќи различни алатки.

Приклучоците за Neovim се стартуваат како посебни процеси, за интеракција со која се користи форматот MessagePack. Интеракцијата со приклучоците се врши асинхроно, без блокирање на основните компоненти на уредникот. За пристап до додатокот, може да се користи TCP приклучок, т.е. приклучокот може да се извршува на надворешен систем. Во исто време, Neovim останува наназад компатибилен со Vim, продолжува да го поддржува Vimscript (Lua се нуди како алтернатива) и поддржува врски за повеќето стандардни Vim приклучоци. Напредните функции на Neovim може да се користат во приклучоци изградени со помош на API специфични за Neovim.

Во моментов веќе подготвени околу 80 специфични приклучоци, врски се достапни за креирање приклучоци и имплементација на интерфејси со користење на различни програмски јазици (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) и рамки (Qt5, ncurses, Node.js, Електрон, GTK+). Се развиваат неколку опции за кориснички интерфејс. Додатоците за GUI се многу слични на приклучоците, но за разлика од приклучоците, тие иницираат повици до функциите на Neovim, додека приклучоците се повикуваат од внатре во Neovim.

Некои од промените во нова верзија:

  • Додаден е голем дел од нови функции на API и настани на корисничкиот интерфејс.
  • Додадена е нова стандардна библиотека Nvim-Lua за развој на приклучоци на јазикот Луа.
  • Развојот на протоколот за кориснички интерфејс продолжува, ажурирајќи ги информациите на екранот на ниво на линии, наместо на поединечни знаци.
  • Додадена е поддршка за полноправни пловечки прозорци, кои можат да се постават на која било локација, да се прикачат, да се поврзат со поединечни бафери за уредување и да се групираат во режимот Multigrid.
  • Додадена е опцијата „pumblend“ за проѕирни паѓачки менија.

Извор: opennet.ru

Додадете коментар