Vrystelling van Neovim 0.7.0, 'n gemoderniseerde weergawe van die Vim-redigeerder

Neovim 0.7.0 is vrygestel, 'n vurk van die Vim-redigeerder wat gefokus is op die verhoging van uitbreidbaarheid en buigsaamheid. Die projek herwerk die Vim-kodebasis vir meer as sewe jaar, as gevolg waarvan veranderings aangebring word wat kode-instandhouding vereenvoudig, 'n manier bied om arbeid tussen verskeie instandhouers te verdeel, die koppelvlak van die basisdeel te skei (die koppelvlak kan verander sonder om aan die interne dele te raak) en implementeer 'n nuwe uitbreidbare argitektuur gebaseer op inproppe. Die oorspronklike ontwikkelings van die projek word onder die Apache 2.0-lisensie versprei, en die basiese deel word onder die Vim-lisensie versprei. Klaargemaakte samestellings word voorberei vir Linux (appimage), Windows en macOS.

Een van die probleme met Vim wat die skepping van Neovim aangespoor het, was sy opgeblase, monolitiese kodebasis, wat uit meer as 300 duisend reëls C (C89)-kode bestaan. Slegs 'n paar mense verstaan ​​al die nuanses van die Vim-kodebasis, en alle veranderinge word deur een onderhouer beheer, wat dit moeilik maak om die redigeerder te onderhou en te verbeter. In plaas van die kode wat in die Vim-kern ingebou is om die GUI te ondersteun, stel Neovim voor om 'n universele laag te gebruik wat jou toelaat om koppelvlakke te skep met behulp van verskeie gereedskapstelle.

Inproppe vir Neovim word as aparte prosesse bekendgestel, vir interaksie waarmee die MessagePack-formaat gebruik word. Interaksie met plugins word asynchroon uitgevoer, sonder om die basiese komponente van die redigeerder te blokkeer. Om toegang tot die inprop te verkry, kan 'n TCP-sok gebruik word, d.w.s. die inprop kan op 'n eksterne stelsel uitgevoer word. Terselfdertyd bly Neovim agteruit versoenbaar met Vim, ondersteun Vimscript steeds (Lua word as alternatief aangebied) en ondersteun verbindings vir die meeste standaard Vim-inproppe. Neovim se gevorderde kenmerke kan gebruik word in plugins wat gebou is met Neovim-spesifieke API's.

Tans is ongeveer 130 spesifieke inproppe reeds voorberei, bindings is beskikbaar vir die skep van plugins en implementering van koppelvlakke met behulp van verskeie programmeertale (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) en raamwerke (Qt, ncurses, Node .js, Electron, GTK). Verskeie gebruikerskoppelvlak-opsies word ontwikkel. GUI-byvoegings is baie soos inproppe, maar anders as inproppe, begin hulle oproepe na Neovim-funksies, terwyl inproppe van binne Neovim geroep word.

Die nuwe weergawe bied aanvanklike ondersteuning vir afgeleë werk, wat jou toelaat om Neovim op die bediener te laat loop en vanaf die kliëntstelsel daarmee te koppel deur 'n aparte ui_client te gebruik. Ander veranderinge sluit in: ondersteuning vir Python 2 is gestaak, die gebruik van Lua-funksies in sleutelkaart is toegelaat, nuwe opdragte is by die API gevoeg, die vermoë om die Lua-taal te gebruik vir die ontwikkeling van plugins en konfigurasiebestuur is aansienlik uitgebrei, gereedskap vir die diagnose van probleme in kode is verbeter, ondersteuning vir die globale statusbalk is bygevoeg, prestasie-optimalisasies is uitgevoer. Die vermoëns van die ingeboude LSP-kliënt (Language Server Protocol) is uitgebrei, wat gebruik kan word om die ontledingslogika en kodevoltooiing na eksterne bedieners oor te dra.

Bron: opennet.ru

Voeg 'n opmerking