Vydanie Neovim 0.6.0, modernizovaná verzia editora Vim

Bol vydaný Neovim 0.6.0, vidlica editora Vim zameraná na zvýšenie rozšíriteľnosti a flexibility. Projekt prerába základňu kódu Vim už viac ako sedem rokov, výsledkom čoho sú zmeny, ktoré zjednodušujú údržbu kódu, poskytujú prostriedok na rozdelenie práce medzi viacerých správcov, oddeľujú rozhranie od základnej časti (rozhranie môže byť zmenené bez toho, aby ste sa dotkli vnútorných častí) a implementujte novú rozšíriteľnú architektúru založenú na zásuvných moduloch. Pôvodný vývoj projektu je distribuovaný pod licenciou Apache 2.0 a základná časť je distribuovaná pod licenciou Vim. Pre Linux (appimage), Windows a macOS sú pripravené hotové zostavy.

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.

Niektoré zo zmien v novej verzii:

  • В 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.

Zdroj: opennet.ru

Pridať komentár