W ramach projektu Neovim baza kodu Vima jest poddawana przeróbkom od ponad pięciu lat, w wyniku czego wprowadzane są zmiany, które upraszczają utrzymanie kodu, umożliwiają podział pracy pomiędzy kilku opiekunów, oddzielają interfejs od część bazową (interfejs można zmienić bez dotykania elementów wewnętrznych) i wdrożyć nową
Jednym z problemów z Vimem, który skłonił do stworzenia Neovima, była jego rozdęta, monolityczna baza kodu, składająca się z ponad 300 tysięcy linii kodu C (C89). Tylko kilka osób rozumie wszystkie niuanse bazy kodu Vima, a wszystkimi zmianami steruje jeden opiekun, co utrudnia utrzymanie i ulepszanie edytora. Zamiast kodu wbudowanego w rdzeń Vima obsługującego GUI, Neovim proponuje zastosowanie uniwersalnej warstwy, która pozwala na tworzenie interfejsów przy użyciu różnych zestawów narzędzi.
Wtyczki do Neovima są uruchamiane jako osobne procesy, do interakcji z którymi używany jest format MessagePack. Interakcja z wtyczkami odbywa się asynchronicznie, bez blokowania podstawowych komponentów edytora. Aby uzyskać dostęp do wtyczki można wykorzystać gniazdo TCP, tj. wtyczkę można uruchomić na systemie zewnętrznym. Jednocześnie Neovim pozostaje wstecznie kompatybilny z Vimem, nadal obsługuje Vimscript (jako alternatywa oferowana jest Lua) i obsługuje połączenia dla większości standardowych wtyczek Vima. Zaawansowanych funkcji Neovima można używać we wtyczkach zbudowanych przy użyciu interfejsów API specyficznych dla Neovima.
Już obecnie
Niektóre zmiany w
- Dodano dużą część nowych funkcji API i zdarzeń interfejsu użytkownika.
- Dodano nową standardową bibliotekę Nvim-Lua do tworzenia wtyczek w języku Lua.
- Rozwój protokołu interfejsu użytkownika trwa, aktualizując informacje na ekranie na poziomie linii, a nie pojedynczych znaków.
- Dodano obsługę pełnoprawnych pływających okien, które można umieścić w dowolnym miejscu, dołączyć, połączyć z indywidualnymi buforami edycyjnymi i pogrupować w trybie Multigrid.
- Dodano opcję „pumblend” do półprzezroczystych menu rozwijanych.
Źródło: opennet.ru