Dostępny jest Neovim 0.4, unowocześniona wersja edytora Vima

opublikowany wydanie Neovim 0.4, rozwidlenie z edytora Vima, skupiony na zwiększenie rozszerzalności i elastyczności. Oryginalne rozwinięcia projektu rozpowszechnianie się na licencji Apache 2.0, a część bazowa na licencji Vima.

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ą rozszerzalna architektura w oparciu o wtyczki.

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 przygotowany dostępnych jest około 80 specyficznych wtyczek, powiązań umożliwiających tworzenie wtyczek i implementację interfejsów przy użyciu różnych języków programowania (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) i frameworków (Qt5, ncurses, Node.js, Elektron, GTK+). Opracowywanych jest kilka opcji interfejsu użytkownika. Dodatki GUI są bardzo podobne do wtyczek, ale w przeciwieństwie do wtyczek inicjują wywołania funkcji Neovima, podczas gdy wtyczki są wywoływane z poziomu Neovima.

Niektóre zmiany w Nowa wersja:

  • 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

Dodaj komentarz