У рамках проекту Neovim вже понад п'ять років проводиться переробка кодової бази Vim, в результаті якої вносяться зміни, що спрощують супровід коду, що надають засоби поділу праці між декількома мейнтейнерами, що відокремлюють інтерфейс від базової частини (інтерфейс можна змінювати не чіпаючи нутрощі) і реалізують нову
З проблем Vim, що спонукали до створення Neovim, відзначається роздута монолітна кодова база, що складається з понад 300 тисяч рядків коду мовою Сі (C89). У всіх нюансах кодової бази Vim розбирається лише кілька людей, а всі зміни контролює один мейнтейнер, що ускладнює супровід та роботу над удосконаленням редактора. Замість вбудованого в ядро Vim коду для підтримки GUI в Neovim пропонується використовувати універсальний прошарок, що дозволяє створювати інтерфейси з використанням різних тулкітів.
Плагіни до Neovim запускаються як окремі процеси для взаємодії з якими використовується формат MessagePack. Взаємодія з плагінами проводиться в асинхронному режимі без блокування базових компонентів редактора. Для звернення до плагіна можна використовувати TCP-сокет, тобто. плагін може запускатися на зовнішній системі. При цьому Neovim залишається назад сумісним з Vim, продовжує підтримувати Vimscript (як альтернатива пропонується Lua) і підтримує підключення більшості штатних плагінів Vim. Розширені можливості Neovim можуть бути використані в плагінах, побудованих з використанням API, специфічного для Neovim.
Нині вже
Деякі із змін у
- Додано велику порцію нових функцій API та подій інтерфейсу користувача.
- Додано нову стандартну бібліотеку Nvim-Lua для розробки плагінів мовою Lua.
- Продовжено розвиток протоколу інтерфейсу користувача, що виконує оновлення інформації на екрані на рівні рядків, а не окремих символів.
- Додано підтримку повноцінних плаваючих вікон, які можуть розміщуватись у довільному місці, прикріплюватися, зв'язуватися з окремими буферами редагування, групуватися в режимі Multigrid.
- Додана опція 'pumblend' для напівпрозорих меню, що випадають.
Джерело: opennet.ru