Neovim 0.5, en moderniserad version av Vim-redigeraren, är tillgänglig

Efter nästan två års utveckling har Neovim 0.5 släppts, en gaffel från Vim-redigeraren fokuserad på att öka töjbarheten och flexibiliteten. Projektet har omarbetat Vim-kodbasen i mer än sju år, som ett resultat av att ändringar görs som förenklar kodunderhållet, ger ett sätt att fördela arbetet mellan flera underhållare, separerar gränssnittet från basdelen (gränssnittet kan vara ändras utan att röra det interna) och implementera en ny utökningsbar arkitektur på baserad på plugins. Den ursprungliga utvecklingen av projektet distribueras under Apache 2.0-licensen, och den grundläggande delen distribueras under Vim-licensen.

Ett av problemen med Vim som föranledde skapandet av Neovim var dess uppsvällda, monolitiska kodbas, bestående av mer än 300 tusen rader C (C89)-kod. Endast ett fåtal personer förstår alla nyanser i Vim-kodbasen, och alla ändringar kontrolleras av en underhållare, vilket gör det svårt att underhålla och förbättra redigeraren. Istället för koden inbyggd i Vim-kärnan för att stödja GUI, föreslår Neovim att du använder ett universellt lager som låter dig skapa gränssnitt med hjälp av olika verktygssatser.

Plugins för Neovim lanseras som separata processer, för interaktion med vilka MessagePack-formatet används. Interaktion med plugins utförs asynkront, utan att blockera de grundläggande komponenterna i editorn. För att komma åt pluginet kan ett TCP-uttag användas, d.v.s. plugin-programmet kan köras på ett externt system. Samtidigt förblir Neovim bakåtkompatibel med Vim, fortsätter att stödja Vimscript (Lua erbjuds som ett alternativ) och stöder anslutningar för de flesta vanliga Vim-plugins. Neovims avancerade funktioner kan användas i plugins byggda med hjälp av Neovim-specifika API:er.

För närvarande har cirka 130 specifika plugins redan förberetts, bindningar är tillgängliga för att skapa plugins och implementera gränssnitt med olika programmeringsspråk (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) och ramverk (Qt, ncurses, Node .js, Electron, GTK). Flera användargränssnittsalternativ utvecklas. GUI-tillägg liknar plugins på många sätt, men till skillnad från plugins initierar de anrop till Neovim-funktioner, medan plugins anropas inifrån Neovim.

Några av ändringarna i den nya versionen:

  • Lade till en inbyggd LSP-klient (Language Server Protocol) i Lua, som kan användas för att ansluta till externa tjänster för analys och kodkomplettering.
  • Lade till ett API för att styra utformningen av allokeringsbuffertar.
  • Lade till ett API för att använda utökade taggar för att spåra ändringar på bytenivå.
  • Utökat stöd för Lua som språk för pluginutveckling och konfigurationshantering.
  • Lade till experimentellt stöd för trädsitterparsingmotorn.

Källa: opennet.ru

Lägg en kommentar