Lansarea Neovim 0.6.0, o versiune modernizată a editorului Vim

A fost lansat Neovim 0.6.0, o furcă a editorului Vim axată pe creșterea extensibilității și flexibilității. Proiectul reproiectează baza de cod Vim de mai bine de șapte ani, în urma cărora se fac modificări care simplifică întreținerea codului, oferă un mijloc de împărțire a muncii între mai mulți întreținători, separă interfața de partea de bază (interfața poate fi schimbat fără a atinge elementele interne) și implementați o nouă arhitectură extensibilă bazată pe pluginuri. Dezvoltarile originale ale proiectului sunt distribuite sub licenta Apache 2.0, iar partea de baza este distribuita sub licenta Vim. Ansamblurile gata făcute sunt pregătite pentru Linux (appimage), Windows și macOS.

Una dintre problemele cu Vim care a determinat crearea lui Neovim a fost baza sa de cod umflată, monolitică, constând din peste 300 de mii de linii de cod C (C89). Doar puțini oameni înțeleg toate nuanțele bazei de cod Vim și toate modificările sunt controlate de un singur întreținător, ceea ce face dificilă întreținerea și îmbunătățirea editorului. În loc de codul încorporat în nucleul Vim pentru a sprijini GUI, Neovim propune utilizarea unui strat universal care vă permite să creați interfețe folosind diverse seturi de instrumente.

Pluginurile pentru Neovim sunt lansate ca procese separate, pentru interacțiunea cu care se folosește formatul MessagePack. Interacțiunea cu pluginurile se realizează asincron, fără a bloca componentele de bază ale editorului. Pentru a accesa pluginul, se poate folosi un socket TCP, de ex. pluginul poate fi rulat pe un sistem extern. În același timp, Neovim rămâne compatibil cu Vim, continuă să accepte Vimscript (Lua este oferit ca alternativă) și acceptă conexiuni pentru majoritatea pluginurilor Vim standard. Caracteristicile avansate ale Neovim pot fi utilizate în pluginuri create folosind API-uri specifice Neovim.

În prezent, aproximativ 130 de plugin-uri specifice au fost deja pregătite, sunt disponibile legături pentru crearea de plugin-uri și implementarea interfețelor folosind diverse limbaje de programare (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) și cadre (Qt, ncurses, Node .js, Electron, GTK). Mai multe opțiuni de interfață cu utilizatorul sunt în curs de dezvoltare. Suplimentele GUI seamănă mult cu pluginurile, dar spre deosebire de pluginuri, acestea inițiază apeluri la funcțiile Neovim, în timp ce pluginurile sunt apelate din interiorul Neovim.

Unele dintre modificările din noua versiune:

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

Sursa: opennet.ru

Adauga un comentariu