Neovim 0.6.0, Vimi redaktori moderniseeritud versioon, väljalase

Välja on antud Neovim 0.6.0, mis on Vimi redaktori hark, mis keskendub laiendatavuse ja paindlikkuse suurendamisele. Projektis on Vim koodibaasi ümber tehtud üle seitsme aasta, mille tulemusena tehakse muudatusi, mis lihtsustavad koodi hooldust, annavad võimaluse tööjaotuseks mitme hooldaja vahel, eraldavad liidese baasosast (liidese saab muudetud ilma sisemisi elemente puudutamata) ja juurutada uus laiendatav arhitektuur, mis põhineb pistikprogrammidel. Projekti originaalarendusi levitatakse Apache 2.0 litsentsi ja põhiosa Vim litsentsi all. Valmis sõlmed on ette valmistatud Linuxi (appimage), Windowsi ja macOS-i jaoks.

Üks Vimiga seotud probleeme, mis ajendas Neovimi looma, oli selle ülespuhutud, monoliitne koodibaas, mis koosnes enam kui 300 tuhandest C (C89) koodireast. Vaid vähesed inimesed mõistavad Vimi koodibaasi kõiki nüansse ja kõiki muudatusi juhib üks hooldaja, mis muudab redaktori hooldamise ja täiustamise keeruliseks. GUI toetamiseks Vimi tuuma sisseehitatud koodi asemel teeb Neovim ettepaneku kasutada universaalset kihti, mis võimaldab luua liideseid erinevate tööriistakomplektide abil.

Neovimi pistikprogrammid käivitatakse eraldi protsessidena, millega suhtlemiseks kasutatakse MessagePacki vormingut. Suhtlemine pistikprogrammidega toimub asünkroonselt, ilma redaktori põhikomponente blokeerimata. Pluginale ligi pääsemiseks saab kasutada TCP pesa, st. pistikprogrammi saab käivitada välises süsteemis. Samal ajal jääb Neovim Vimiga tagasiühilduvaks, jätkab Vimscripti toetamist (alternatiivina pakutakse Lua) ja toetab enamiku standardsete Vimi pistikprogrammide ühendusi. Neovimi täiustatud funktsioone saab kasutada Neovimi spetsiifiliste API-de abil loodud pistikprogrammides.

Hetkel on valmis juba ca 130 spetsiifilist pluginat, olemas on sidumised pluginate loomiseks ja liideste juurutamiseks, kasutades erinevaid programmeerimiskeeli (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) ja raamistikke (Qt, ncurses, Node .js, Electron, GTK). Arendatakse mitmeid kasutajaliidese valikuid. GUI lisandmoodulid sarnanevad paljuski pistikprogrammidega, kuid erinevalt pistikprogrammidest algatavad nad kõnesid Neovimi funktsioonidele, samas kui pluginaid kutsutakse Neovimist.

Mõned muudatused uues versioonis:

  • Vim-skriptidele on lisatud kohalike muutujate tugi, mille ulatust piirab ainult praegune skript.
  • Oluliselt täiustatud Lua keele tugi pistikprogrammide arendamiseks ja konfiguratsioonihalduseks. Vim-skriptides on lisatud võimalus kutsuda meetoditena Lua funktsioone, määrates v:lua prefiksi (näiteks “arg1->v:lua.somemod.func(arg2)”).
  • Laiendatud on sisseehitatud LSP-kliendi (Language Server Protocol) võimalusi, mille abil saab analüüsiloogikat ja koodi lõpetamist välisserveritesse üle kanda. LSP kasutamine võimaldab kasutada enam kui 150 valmis töötlejat erinevate programmeerimiskeelte jaoks, mis on ette valmistatud Visual Studio Code redaktori jaoks.
  • Täiustatud tööriistad koodiprobleemide diagnoosimiseks. Lisatud on võimalus kuvada diagnostikateadete tekste ja ujuvaid aknaid koos selliste teadetega seotud koodidega. Pakutakse LSP-serveri edastatud diagnostikateadete töötlemist.
  • Lisatud on virtuaalsete stringide tugi, mida saab kasutada näiteks teenuseinfoga plokkide kuvamiseks.
  • Tehtud on erinevaid jõudluse optimeerimisi, näiteks on esiletõstetud grupinimede jaoks lubatud räsitabel.
  • Windows 7 ja Windowsi 32-bitiste järkude tugi on lõpetatud.

Allikas: opennet.ru

Lisa kommentaar