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

Neovim 0.7.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.

De nieuwe versie biedt initiële ondersteuning voor werken op afstand, waardoor u Neovim op de server kunt draaien en er verbinding mee kunt maken vanaf het clientsysteem met behulp van een aparte ui_client. Andere veranderingen zijn onder meer: ​​ondersteuning voor Python 2 is stopgezet, het gebruik van Lua-functies in keymap is toegestaan, er zijn nieuwe commando's toegevoegd aan de API, de mogelijkheid om de Lua-taal te gebruiken voor het ontwikkelen van plug-ins en configuratiebeheer is aanzienlijk uitgebreid, tools voor het diagnosticeren van problemen in de code zijn verbeterd, ondersteuning voor de globale statusbalk is toegevoegd en prestatie-optimalisaties zijn uitgevoerd. 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.

Bron: opennet.ru

Voeg een reactie