Utgivelse av Neovim 0.7.0, en modernisert versjon av Vim-editoren

Neovim 0.7.0 har blitt utgitt, en gaffel fra Vim-editoren fokusert på å øke utvidbarhet og fleksibilitet. Prosjektet har omarbeidet Vim-kodebasen i mer enn syv år, som et resultat av at det gjøres endringer som forenkler kodevedlikehold, gir et middel til å dele arbeid mellom flere vedlikeholdere, skille grensesnittet fra basisdelen (grensesnittet kan endret uten å berøre det indre) og implementere en ny utvidbar arkitektur basert på plugins. Den opprinnelige utviklingen av prosjektet er distribuert under Apache 2.0-lisensen, og den grunnleggende delen er distribuert under Vim-lisensen. Ferdige sammenstillinger er forberedt for Linux (appimage), Windows og macOS.

Et av problemene med Vim som førte til opprettelsen av Neovim var dens oppsvulmede, monolitiske kodebase, bestående av mer enn 300 tusen linjer med C (C89)-kode. Bare noen få mennesker forstår alle nyansene i Vim-kodebasen, og alle endringer kontrolleres av én vedlikeholder, noe som gjør det vanskelig å vedlikeholde og forbedre editoren. I stedet for koden innebygd i Vim-kjernen for å støtte GUI, foreslår Neovim å bruke et universelt lag som lar deg lage grensesnitt ved hjelp av ulike verktøysett.

Plugins for Neovim lanseres som separate prosesser, for interaksjon som MessagePack-formatet brukes med. Interaksjon med plugins utføres asynkront, uten å blokkere de grunnleggende komponentene til editoren. For å få tilgang til plugin-en kan en TCP-kontakt brukes, dvs. plugin-en kan kjøres på et eksternt system. Samtidig forblir Neovim bakoverkompatibel med Vim, fortsetter å støtte Vimscript (Lua tilbys som et alternativ) og støtter tilkoblinger for de fleste standard Vim-plugins. Neovims avanserte funksjoner kan brukes i plugins bygget ved hjelp av Neovim-spesifikke APIer.

For øyeblikket er rundt 130 spesifikke plugins allerede utarbeidet, bindinger er tilgjengelige for å lage plugins og implementere grensesnitt ved bruk av ulike programmeringsspråk (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) og rammeverk (Qt, ncurses, Node .js, Electron, GTK). Flere alternativer for brukergrensesnitt er under utvikling. GUI-tillegg er mye som plugins, men i motsetning til plugins, starter de kall til Neovim-funksjoner, mens plugins kalles fra Neovim.

Den nye versjonen tilbyr innledende støtte for eksternt arbeid, slik at du kan kjøre Neovim på serveren og koble til den fra klientsystemet ved hjelp av en separat ui_client. Andre endringer inkluderer: støtte for Python 2 har blitt avviklet, bruk av Lua-funksjoner i keymap har blitt tillatt, nye kommandoer er lagt til API, muligheten til å bruke Lua-språket for å utvikle plugins og konfigurasjonsadministrasjon har blitt betydelig utvidet, verktøy for å diagnostisere problemer i kode er forbedret, støtte for den globale statuslinjen er lagt til, ytelsesoptimaliseringer er utført. Mulighetene til den innebygde LSP-klienten (Language Server Protocol) er utvidet, som kan brukes til å overføre analyselogikken og kodefullføringen til eksterne servere.

Kilde: opennet.ru

Legg til en kommentar