Neovim 0.4, een gemoderniseerde versie van de Vim-editor, is beschikbaar

gepubliceerd релиз Neovim 0.4, een vork van de Vim-editor, gefocust op het vergroten van de uitbreidbaarheid en flexibiliteit. Originele ontwikkelingen van het project worden verspreid onder de Apache 2.0-licentie en het basisgedeelte onder de Vim-licentie.

In het kader van het Neovim-project wordt de Vim-codebasis al meer dan vijf jaar herwerkt, waardoor wijzigingen worden aangebracht die het onderhoud van de code vereenvoudigen, een manier bieden om de arbeid tussen verschillende beheerders te verdelen, de interface te scheiden van de basisdeel (de interface kan worden gewijzigd zonder de interne onderdelen aan te raken) en een nieuw implementeren uitbreidbare architectuur gebaseerd op plug-ins.

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.

Nu al voorbereid ongeveer 80 specifieke plug-ins, bindingen zijn 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 (Qt5, ncurses, Node.js, Elektron, 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 veranderingen in nieuwe versie:

  • Een groot deel van de nieuwe API-functies en gebruikersinterfacegebeurtenissen toegevoegd.
  • Een nieuwe standaardbibliotheek Nvim-Lua toegevoegd voor het ontwikkelen van plug-ins in de Lua-taal.
  • De ontwikkeling van het gebruikersinterfaceprotocol gaat door, waarbij informatie op het scherm wordt bijgewerkt op lijnniveau in plaats van op individuele karakters.
  • Ondersteuning toegevoegd voor volwaardige zwevende vensters, die op elke locatie kunnen worden geplaatst, gekoppeld, gekoppeld aan individuele bewerkingsbuffers en gegroepeerd in Multigrid-modus.
  • 'pumblend'-optie toegevoegd voor doorschijnende vervolgkeuzemenu's.

Bron: opennet.ru

Voeg een reactie