Vim redaktorunun modernləşdirilmiş versiyası olan Neovim 0.5 mövcuddur

После почти двух лет разработки опубликован релиз Neovim 0.5, ответвления от редактора Vim, сфокусированного на повышении расширяемости и гибкости. В рамках проекта уже более семи лет проводится переработка кодовой базы Vim, в результате которой вносятся изменения, упрощающие сопровождение кода, предоставляющие средства разделения труда между несколькими мэйнтейнерами, отделяющие интерфейс от базовой части (интерфейс можно менять не трогая внутренности) и реализующие новую расширяемую архитектуру на основе плагинов. Оригинальные наработки проекта распространяются под лицензией Apache 2.0, а базовая часть под лицензией Vim.

Neovim-in yaradılmasına təkan verən Vim problemlərindən biri onun 300 min sətirdən çox C (C89) kodundan ibarət şişkin, monolit kod bazası idi. Vim kod bazasının bütün nüanslarını yalnız bir neçə nəfər başa düşür və bütün dəyişikliklər bir baxıcı tərəfindən idarə olunur ki, bu da redaktorun saxlanmasını və təkmilləşdirilməsini çətinləşdirir. GUI-ni dəstəkləmək üçün Vim nüvəsinə quraşdırılmış kodun əvəzinə Neovim müxtəlif alət dəstlərindən istifadə edərək interfeyslər yaratmağa imkan verən universal təbəqədən istifadə etməyi təklif edir.

Neovim üçün plaginlər MessagePack formatının istifadə olunduğu qarşılıqlı əlaqə üçün ayrıca proseslər kimi işə salınır. Pluginlərlə qarşılıqlı əlaqə redaktorun əsas komponentlərini bloklamadan asinxron şəkildə həyata keçirilir. Pluginə daxil olmaq üçün bir TCP yuvası istifadə edilə bilər, yəni. plagin xarici sistemdə işlədilə bilər. Eyni zamanda, Neovim Vim ilə geriyə uyğun olaraq qalır, Vimscript-i dəstəkləməyə davam edir (Lua alternativ olaraq təklif olunur) və əksər standart Vim plaginləri üçün bağlantıları dəstəkləyir. Neovim-in qabaqcıl xüsusiyyətləri Neovim-ə məxsus API-lərdən istifadə edərək qurulmuş plaginlərdə istifadə edilə bilər.

Hazırda 130-a yaxın xüsusi plaginlər artıq hazırlanmışdır, müxtəlif proqramlaşdırma dillərindən (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) və çərçivələrdən (Qt, ncurses, Node .js, Electron, GTK). Bir neçə istifadəçi interfeysi variantları hazırlanır. GUI əlavələri plaginlərə bənzəyir, lakin plaginlərdən fərqli olaraq onlar Neovim funksiyalarına zənglər edir, plaginlər isə Neovim daxilindən çağırılır.

Yeni versiyada bəzi dəyişikliklər:

  • Добавлен встроенный LSP-клиент (Language Server Protocol) на языке Lua, который можно использовать для подключения к внешним сервисам для анализа и автодополнения кода.
  • Добавлен API для управления оформлением буферов выделения.
  • Добавлен API для использования расширенных меток, позволяющих отслеживать изменения на уровне отдельных байтов.
  • Расширена поддержка Lua, как языка для разработки плагинов и управления конфигурацией.
  • Добавлена экспериментальная поддержка движка разбора синтаксиса tree-sitter.

Mənbə: opennet.ru

Добавить комментарий