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

Опубліковано реліз Neovim 0.4, відгалуження від редактора Vim, сфокусованого на підвищенні розширюваності та гнучкості. Оригінальні напрацювання проекту поширюються під ліцензією Apache 2.0, а базова частина – під ліцензією Vim.

У рамках проекту Neovim вже понад п'ять років проводиться переробка кодової бази Vim, в результаті якої вносяться зміни, що спрощують супровід коду, що надають засоби поділу праці між декількома мейнтейнерами, що відокремлюють інтерфейс від базової частини (інтерфейс можна змінювати не чіпаючи нутрощі) і реалізують нову розширювану архітектуру на основі плагінів.

З проблем Vim, що спонукали до створення Neovim, відзначається роздута монолітна кодова база, що складається з понад 300 тисяч рядків коду мовою Сі (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, Electron, GTK+). Розвивається кілька варіантів інтерфейсу користувача. GUI-надбудови багато в чому нагадують плагіни, але, на відміну плагінів, вони ініціюють виклик функцій Neovim, тоді як плагіни викликаються з Neovim.

Деякі із змін у нової версії:

  • Додано велику порцію нових функцій API та подій інтерфейсу користувача.
  • Додано нову стандартну бібліотеку Nvim-Lua для розробки плагінів мовою Lua.
  • Продовжено розвиток протоколу інтерфейсу користувача, що виконує оновлення інформації на екрані на рівні рядків, а не окремих символів.
  • Додано підтримку повноцінних плаваючих вікон, які можуть розміщуватись у довільному місці, прикріплюватися, зв'язуватися з окремими буферами редагування, групуватися в режимі Multigrid.
  • Додана опція 'pumblend' для напівпрозорих меню, що випадають.

Джерело: opennet.ru

Додати коментар або відгук