Galima įsigyti „Neovim 0.5“, atnaujintą „Vim“ redaktoriaus versiją

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

Viena iš Vim problemų, paskatinusių sukurti Neovim, buvo jos išpūsta, monolitinė kodo bazė, susidedanti iš daugiau nei 300 tūkstančių C (C89) kodo eilučių. Tik keli žmonės supranta visus Vim kodų bazės niuansus, o visus pakeitimus valdo vienas prižiūrėtojas, todėl sunku prižiūrėti ir tobulinti redaktorių. Vietoj kodo, integruoto į Vim branduolį, palaikantį GUI, Neovim siūlo naudoti universalų sluoksnį, leidžiantį kurti sąsajas naudojant įvairius įrankių rinkinius.

Neovim įskiepiai paleidžiami kaip atskiri procesai, sąveikai su kuriais naudojamas MessagePack formatas. Sąveika su papildiniais vykdoma asinchroniškai, neužblokuojant pagrindinių redaktoriaus komponentų. Norint pasiekti įskiepį, galima naudoti TCP lizdą, t.y. papildinį galima paleisti išorinėje sistemoje. Tuo pačiu metu Neovim išlieka suderinamas su Vim, toliau palaiko Vimscript (Lua siūloma kaip alternatyva) ir palaiko daugumos standartinių Vim įskiepių ryšius. Išplėstinės „Neovim“ funkcijos gali būti naudojamos papildiniuose, sukurtuose naudojant „Neovim“ specifines API.

Šiuo metu jau yra parengta apie 130 specifinių įskiepių, galimi įskiepiai, skirti kurti papildinius ir diegti sąsajas naudojant įvairias programavimo kalbas (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) ir karkasus (Qt, ncurses, Node .js, Electron, GTK). Kuriamos kelios vartotojo sąsajos parinktys. GUI priedai yra labai panašūs į papildinius, tačiau skirtingai nei papildiniai, jie inicijuoja Neovim funkcijų skambučius, o papildiniai iškviečiami iš Neovim.

Kai kurie naujos versijos pakeitimai:

  • Добавлен встроенный LSP-клиент (Language Server Protocol) на языке Lua, который можно использовать для подключения к внешним сервисам для анализа и автодополнения кода.
  • Добавлен API для управления оформлением буферов выделения.
  • Добавлен API для использования расширенных меток, позволяющих отслеживать изменения на уровне отдельных байтов.
  • Расширена поддержка Lua, как языка для разработки плагинов и управления конфигурацией.
  • Добавлена экспериментальная поддержка движка разбора синтаксиса tree-sitter.

Šaltinis: opennet.ru

Добавить комментарий