Wydanie Neovima 0.7.0, unowocześnionej wersji edytora Vima

Został wydany Neovim 0.7.0, rozwidlenie edytora Vima skupiające się na zwiększeniu rozszerzalności i elastyczności. W projekcie od ponad siedmiu lat przerabia się bazę kodu Vima, w wyniku czego wprowadzane są zmiany upraszczające utrzymanie kodu, umożliwiające podział pracy pomiędzy kilku opiekunów, oddzielające interfejs od części bazowej (interfejs może być zmienione bez dotykania elementów wewnętrznych) i wdrożyć nową rozszerzalną architekturę opartą na wtyczkach. Oryginalne rozwinięcia projektu są dystrybuowane na licencji Apache 2.0, a podstawowa część jest dystrybuowana na licencji Vima. Gotowe zestawy przygotowane są dla systemów Linux (appimage), Windows i macOS.

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.

Obecnie przygotowano już około 130 konkretnych wtyczek, dostępne są powiązania umożliwiające tworzenie wtyczek i implementację interfejsów z wykorzystaniem różnych języków programowania (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) i frameworków (Qt, ncurses, Node .js, Electron, 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.

Nowa wersja oferuje wstępną obsługę pracy zdalnej, umożliwiając uruchomienie Neovima na serwerze i połączenie się z nim z systemu klienckiego za pomocą osobnego klienta ui_client. Inne zmiany to: zaprzestano obsługi Pythona 2, zezwolono na korzystanie z funkcji Lua w mapie klawiszy, dodano nowe polecenia do API, znacznie rozszerzono możliwość wykorzystania języka Lua do tworzenia wtyczek i zarządzania konfiguracją, poprawiono narzędzia do diagnozowania problemów w kodzie, dodano obsługę globalnego paska stanu, przeprowadzono optymalizację wydajności. Rozszerzono możliwości wbudowanego klienta LSP (Language Server Protocol), za pomocą którego można przenieść logikę analizy i uzupełnianie kodu na serwery zewnętrzne.

Źródło: opennet.ru

Dodaj komentarz