У рамках праекта 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