Udgivelse af Neovim 0.6.0, en moderniseret version af Vim-editoren

Neovim 0.6.0 er blevet frigivet, en forgrening af Vim-editoren fokuseret på at øge udvidelsesmuligheder og fleksibilitet. Projektet har omarbejdet Vim-kodebasen i mere end syv år, som et resultat af, at der foretages ændringer, der forenkler kodevedligeholdelsen, giver mulighed for at dele arbejdet mellem flere vedligeholdere, adskiller grænsefladen fra basisdelen (grænsefladen kan ændret uden at røre det interne) og implementere en ny udvidelsesbar arkitektur baseret på plugins. De oprindelige udviklinger af projektet er distribueret under Apache 2.0-licensen, og den grundlæggende del er distribueret under Vim-licensen. Færdiglavede samlinger er forberedt til Linux (appimage), Windows og macOS.

Et af problemerne med Vim, der foranledigede oprettelsen af ​​Neovim, var dens oppustede, monolitiske kodebase, bestående af mere end 300 tusind linjer C (C89) kode. Kun få mennesker forstår alle nuancerne i Vim-kodebasen, og alle ændringer styres af én vedligeholder, hvilket gør det vanskeligt at vedligeholde og forbedre editoren. I stedet for koden, der er indbygget i Vim-kernen for at understøtte GUI, foreslår Neovim at bruge et universelt lag, der giver dig mulighed for at oprette grænseflader ved hjælp af forskellige værktøjssæt.

Plugins til Neovim lanceres som separate processer, til interaktion, hvormed MessagePack-formatet bruges. Interaktion med plugins udføres asynkront uden at blokere editorens grundlæggende komponenter. For at få adgang til pluginnet kan der bruges en TCP socket, dvs. plugin'et kan køres på et eksternt system. Samtidig forbliver Neovim bagudkompatibel med Vim, fortsætter med at understøtte Vimscript (Lua tilbydes som et alternativ) og understøtter forbindelser til de fleste standard Vim-plugins. Neovims avancerede funktioner kan bruges i plugins bygget ved hjælp af Neovim-specifikke API'er.

I øjeblikket er omkring 130 specifikke plugins allerede blevet forberedt, bindinger er tilgængelige til at skabe plugins og implementere grænseflader ved hjælp af forskellige programmeringssprog (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) og frameworks (Qt, ncurses, Node .js, Electron, GTK). Flere muligheder for brugergrænseflader er under udvikling. GUI-tilføjelser minder meget om plugins, men i modsætning til plugins starter de opkald til Neovim-funktioner, mens plugins kaldes inde fra Neovim.

Nogle af ændringerne i den nye version:

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

Kilde: opennet.ru

Tilføj en kommentar