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

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

Sommige van die veranderinge in die nuwe weergawe:

  • Ondersteuning vir plaaslike veranderlikes is by vim-skrifte gevoeg, waarvan die omvang slegs deur die huidige skrif beperk word.
  • Aansienlik verbeterde Lua-taalondersteuning vir inpropontwikkeling en konfigurasiebestuur. In vim-skrifte is die vermoë om Lua-funksies as metodes te noem bygevoeg deur die v:lua-voorvoegsel te spesifiseer (byvoorbeeld "arg1->v:lua.somemod.func(arg2)").
  • 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. Die gebruik van LSP laat jou toe om meer as 150 klaargemaakte hanteerders te gebruik vir verskeie programmeertale wat voorberei is vir die Visual Studio Code-redigeerder.
  • Verbeterde gereedskap om probleme in kode te diagnoseer. Bygevoeg die vermoë om die teks van diagnostiese boodskappe en drywende vensters te vertoon met kode wat met sulke boodskappe geassosieer word. Verwerking van diagnostiese boodskappe wat deur die LSP-bediener versend word, word verskaf.
  • Bygevoeg ondersteuning vir virtuele stringe, wat byvoorbeeld gebruik kan word om blokke met diensinligting te vertoon.
  • Verskeie prestasie-optimalisasies is gemaak, byvoorbeeld, 'n hash-tabel is geaktiveer vir gemerkte groepname.
  • Ondersteuning vir Windows 7 en 32-bis-bou van Windows is gestaak.

Bron: opennet.ru

Voeg 'n opmerking