Wydanie Neovima 0.6.0, unowocześnionej wersji edytora Vima

Został wydany Neovim 0.6.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.

Niektóre zmiany w nowej wersji:

  • В vim-скрипты добавлена поддержка локальных переменных, область видимости для которых ограничена только текущим скриптом.
  • Значительно улучшена поддержка языка Lua для разработки плагинов и управления конфигурацией. В vim-скриптах добавлена возможность вызова Lua-функций как методов через указание префикса v:lua (например, «arg1->v:lua.somemod.func(arg2)»).
  • Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы. Применение LSP позволяет использовать более 150 готовых обработчиков для различных языков программирования, подготовленных для редактора кода Visual Studio Code.
  • Улучшены средства диагностики проблем в коде. Добавлена возможность вывода текста диагностических сообщений и плавающих окон с кодом, связанным с подобными сообщениями. Обеспечена обработка диагностических сообщений, передаваемых LSP-сервером.
  • Добавлена поддержка виртуальных строк, которые могут использоваться, например, для вывода блоков со служебной информацией.
  • Внесены различные оптимизации производительности, например, задействована хэш таблица для подсвечиваемых имён групп.
  • Прекращена поддержка Windows 7 и 32-разрядных сборок для Windows.

Źródło: opennet.ru

Dodaj komentarz