Saadaval on Vimi redaktori moderniseeritud versioon Neovim 0.5

Pärast peaaegu kaheaastast arendustööd on välja antud Neovim 0.5, 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.

Ü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:

  • Luasse on lisatud sisseehitatud LSP-klient (Language Server Protocol), mida saab kasutada analüüsiks ja koodi lõpetamiseks välisteenustega ühenduse loomiseks.
  • Lisatud API, et juhtida jaotuspuhvrite kujundust.
  • Lisatud API, et kasutada laiendatud silte muudatuste jälgimiseks baidi tasemel.
  • Laiendatud tugi Luale kui pluginate arendamise ja konfiguratsioonihalduse keelele.
  • Lisatud eksperimentaalne tugi puuhalduri parsimismootorile.

Allikas: opennet.ru

Lisa kommentaar