Ir pieejama Vim redaktora modernizēta versija Neovim 0.5

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

Viena no Vim problēmām, kas pamudināja izveidot Neovim, bija tā uzpūstā, monolīta koda bāze, kas sastāvēja no vairāk nekā 300 tūkstošiem C (C89) koda rindiņu. Tikai daži cilvēki saprot visas Vim kodu bāzes nianses, un visas izmaiņas kontrolē viens uzturētājs, kas apgrūtina redaktora uzturēšanu un uzlabošanu. Vim kodolā iebūvētā koda vietā, lai atbalstītu GUI, Neovim piedāvā izmantot universālu slāni, kas ļauj izveidot saskarnes, izmantojot dažādus rīku komplektus.

Neovim spraudņi tiek palaisti kā atsevišķi procesi, mijiedarbībai ar kuriem tiek izmantots MessagePack formāts. Mijiedarbība ar spraudņiem tiek veikta asinhroni, nebloķējot redaktora pamatkomponentus. Lai piekļūtu spraudnim, var izmantot TCP ligzdu, t.i. spraudni var palaist ārējā sistēmā. Tajā pašā laikā Neovim joprojām ir saderīgs ar Vim, turpina atbalstīt Vimscript (Lua tiek piedāvāts kā alternatīva) un atbalsta savienojumus lielākajai daļai standarta Vim spraudņu. Neovim uzlabotās funkcijas var izmantot spraudņos, kas izveidoti, izmantojot Neovim specifiskās API.

Šobrīd jau ir sagatavoti aptuveni 130 specifiski spraudņi, pieejami iesējumi spraudņu izveidei un saskarņu ieviešanai, izmantojot dažādas programmēšanas valodas (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) un ietvarus (Qt, ncurses, Node .js, Electron, GTK). Tiek izstrādātas vairākas lietotāja saskarnes iespējas. GUI pievienojumprogrammas līdzinās spraudņiem, taču atšķirībā no spraudņiem tie ierosina izsaukumus uz Neovim funkcijām, savukārt spraudņi tiek izsaukti no Neovim.

Dažas izmaiņas jaunajā versijā:

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

Avots: opennet.ru

Pievieno komentāru