Uitgave van Neovim 0.6.0, een gemoderniseerde versie van de Vim-editor

Neovim 0.6.0 is uitgebracht, een fork van de Vim-editor gericht op het vergroten van de uitbreidbaarheid en flexibiliteit. Het project heeft de Vim-codebasis al meer dan zeven jaar herwerkt, als gevolg waarvan wijzigingen zijn aangebracht die het onderhoud van de code vereenvoudigen, een manier bieden om de arbeid tussen verschillende beheerders te verdelen, de interface te scheiden van het basisgedeelte (de interface kan worden gewijzigd zonder de interne onderdelen aan te raken) en een nieuwe uitbreidbare architectuur te implementeren op basis van plug-ins. De originele ontwikkelingen van het project worden gedistribueerd onder de Apache 2.0-licentie en het basisgedeelte wordt gedistribueerd onder de Vim-licentie. Kant-en-klare assemblages worden voorbereid voor Linux (appimage), Windows en macOS.

Een van de problemen met Vim die aanleiding gaven tot de oprichting van Neovim was de opgeblazen, monolithische codebasis, bestaande uit meer dan 300 regels C (C89)-code. Slechts een paar mensen begrijpen alle nuances van de Vim-codebase en alle wijzigingen worden beheerd door één onderhouder, wat het moeilijk maakt om de editor te onderhouden en te verbeteren. In plaats van de code die in de Vim-kern is ingebouwd om de GUI te ondersteunen, stelt Neovim voor om een ​​universele laag te gebruiken waarmee je interfaces kunt maken met behulp van verschillende toolkits.

Plug-ins voor Neovim worden gelanceerd als afzonderlijke processen, voor interactie waarbij het MessagePack-formaat wordt gebruikt. Interactie met plug-ins wordt asynchroon uitgevoerd, zonder de basiscomponenten van de editor te blokkeren. Om toegang te krijgen tot de plug-in kan een TCP-socket worden gebruikt, d.w.z. de plug-in kan op een extern systeem worden uitgevoerd. Tegelijkertijd blijft Neovim achterwaarts compatibel met Vim, blijft het Vimscript ondersteunen (Lua wordt aangeboden als alternatief) en ondersteunt het verbindingen voor de meeste standaard Vim-plug-ins. De geavanceerde functies van Neovim kunnen worden gebruikt in plug-ins die zijn gebouwd met behulp van Neovim-specifieke API's.

Momenteel zijn er al ongeveer 130 specifieke plug-ins voorbereid, er zijn bindingen beschikbaar voor het maken van plug-ins en het implementeren van interfaces met behulp van verschillende programmeertalen (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) en frameworks (Qt, ncurses, Node .js, Electron, GTK). Er worden verschillende gebruikersinterface-opties ontwikkeld. GUI-add-ons lijken veel op plug-ins, maar in tegenstelling tot plug-ins initiëren ze oproepen naar Neovim-functies, terwijl plug-ins worden aangeroepen vanuit Neovim.

Enkele wijzigingen in de nieuwe versie:

  • Ondersteuning voor lokale variabelen is toegevoegd aan vim-scripts, waarvan de reikwijdte alleen wordt beperkt door het huidige script.
  • Aanzienlijk verbeterde Lua-taalondersteuning voor de ontwikkeling van plug-ins en configuratiebeheer. In vim-scripts is de mogelijkheid toegevoegd om Lua-functies als methoden aan te roepen door het v:lua-voorvoegsel op te geven (bijvoorbeeld "arg1->v:lua.somemod.func(arg2)").
  • De mogelijkheden van de ingebouwde LSP-client (Language Server Protocol) zijn uitgebreid, die kan worden gebruikt om de analyselogica en het aanvullen van de code over te dragen naar externe servers. Door het gebruik van LSP kunt u gebruik maken van ruim 150 kant-en-klare handlers voor verschillende programmeertalen, voorbereid voor de Visual Studio Code-editor.
  • Verbeterde tools voor het diagnosticeren van problemen in code. De mogelijkheid toegevoegd om de tekst van diagnostische berichten en zwevende vensters weer te geven met code die aan dergelijke berichten is gekoppeld. Er wordt voorzien in de verwerking van diagnostische berichten verzonden door de LSP-server.
  • Ondersteuning toegevoegd voor virtuele strings, die bijvoorbeeld kunnen worden gebruikt om blokken met service-informatie weer te geven.
  • Er zijn verschillende prestatie-optimalisaties doorgevoerd, er is bijvoorbeeld een hashtabel ingeschakeld voor gemarkeerde groepsnamen.
  • Ondersteuning voor Windows 7 en 32-bits versies van Windows is stopgezet.

Bron: opennet.ru

Voeg een reactie