Liberasyon Neovim 0.6.0, yon vèsyon modènize editè Vim

Neovim 0.6.0 te lage, yon fouchèt nan editè a Vim konsantre sou ogmante ekstansibilite ak fleksibilite. Pwojè a te retravay baz kòd Vim pou plis pase sèt ane, kòm yon rezilta chanjman yo te fè ki senplifye antretyen kòd, bay yon mwayen pou divize travay ant plizyè moun ki kenbe, separe koòdone a ak pati de baz la (koòdone a kapab chanje san yo pa manyen entèn yo) epi aplike yon nouvo achitekti ekstansib ki baze sou grefon. Devlopman orijinal yo nan pwojè a distribye anba lisans Apache 2.0, ak pati debaz la distribye anba lisans Vim. Asanble pare yo prepare pou Linux (appimage), Windows ak macOS.

Youn nan pwoblèm ak Vim ki te pouse kreyasyon Neovim se te yon baz kòd monolitik ki gonfle, ki gen plis pase 300 mil liy kòd C (C89). Se sèlman kèk moun ki konprann tout nuans yo nan Vim kodbaz la, epi tout chanjman yo kontwole pa yon sèl mentenans, ki fè li difisil pou kenbe ak amelyore editè a. Olye de kòd ki te bati nan nwayo Vim pou sipòte entèfas, Neovim pwopoze w sèvi ak yon kouch inivèsèl ki pèmèt ou kreye koòdone lè l sèvi avèk divès kalite zouti.

Plugins pou Neovim yo lanse kòm pwosesis separe, pou entèraksyon ak fòma MessagePack yo itilize. Se entèraksyon ak grefon yo te pote asynchrone, san yo pa bloke eleman debaz yo nan editè a. Pou jwenn aksè nan Plugin la, yo ka itilize yon priz TCP, i.e. ka plugin a dwe kouri sou yon sistèm ekstèn. An menm tan an, Neovim rete bak konpatib ak Vim, kontinye sipòte Vimscript (Lua yo ofri kòm yon altènatif) ak sipòte koneksyon pou pifò grefon Vim estanda. Karakteristik avanse Neovim yo ka itilize nan grefon ki konstwi lè l sèvi avèk API espesifik Neovim.

Kounye a, apeprè 130 grefon espesifik yo te deja prepare, lyezon yo disponib pou kreye grefon ak aplike koòdone lè l sèvi avèk divès langaj pwogramasyon (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) ak kad (Qt, ncurses, Node .js, Electron, GTK). Plizyè opsyon koòdone itilizatè yo ap devlope. Add-ons GUI yo anpil tankou grefon, men kontrèman ak grefon, yo kòmanse apèl nan fonksyon Neovim, pandan y ap rele grefon soti nan Neovim.

Gen kèk nan chanjman ki fèt nan nouvo vèsyon an:

  • В 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.

Sous: opennet.ru

Add nouvo kòmantè