K dispozícii je Neovim 0.5, modernizovaná verzia editora Vim

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

Jedným z problémov Vimu, ktorý podnietil vytvorenie Neovimu, bola jeho nafúknutá, monolitická kódová základňa pozostávajúca z viac ako 300 tisíc riadkov kódu C (C89). Len málo ľudí rozumie všetkým nuansám kódovej základne Vim a všetky zmeny riadi jeden správca, čo sťažuje údržbu a vylepšovanie editora. Namiesto kódu zabudovaného do jadra Vim na podporu GUI, Neovim navrhuje použitie univerzálnej vrstvy, ktorá vám umožňuje vytvárať rozhrania pomocou rôznych súprav nástrojov.

Pluginy pre Neovim sa spúšťajú ako samostatné procesy, na interakciu s ktorými sa používa formát MessagePack. Interakcia s pluginmi prebieha asynchrónne, bez blokovania základných komponentov editora. Pre prístup k pluginu je možné použiť TCP socket, t.j. plugin je možné spustiť na externom systéme. Zároveň zostáva Neovim spätne kompatibilný s Vim, naďalej podporuje Vimscript (Lua sa ponúka ako alternatíva) a podporuje pripojenia pre väčšinu štandardných doplnkov Vim. Pokročilé funkcie Neovimu možno použiť v zásuvných moduloch vytvorených pomocou API špecifických pre Neovim.

V súčasnosti je už pripravených asi 130 špecifických pluginov, k dispozícii sú väzby na vytváranie pluginov a implementáciu rozhraní pomocou rôznych programovacích jazykov (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) a frameworkov (Qt, ncurses, Node .js, Electron, GTK). Vyvíja sa niekoľko možností používateľského rozhrania. Doplnky GUI sú veľmi podobné zásuvným modulom, ale na rozdiel od zásuvných modulov spúšťajú volania funkcií Neovimu, zatiaľ čo zásuvné moduly sa volajú z Neovimu.

Некоторые из изменений в новой версии:

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

Zdroj: opennet.ru

Pridať komentár