Neovim 0.7.0, Vimi redaktori moderniseeritud versioon, väljalase

Välja on antud Neovim 0.7.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.

Uus versioon pakub kaugtöö esmast tuge, võimaldades Neovimi serveris käivitada ja sellega klientsüsteemist ühenduda eraldi ui_clienti abil. Muude muudatuste hulka kuuluvad: Python 2 tugi on lõpetatud, Lua funktsioonide kasutamine klahvikaardil on lubatud, API-le on lisatud uusi käske, oluliselt laiendatud võimalust kasutada Lua keelt pluginate arendamiseks ja konfiguratsioonihalduseks, Täiustatud on koodiprobleemide diagnoosimise tööriistu, lisatud on globaalse olekuriba tugi, tehtud jõudluse optimeerimisi. Laiendatud on sisseehitatud LSP-kliendi (Language Server Protocol) võimalusi, mille abil saab analüüsiloogikat ja koodi lõpetamist välisserveritesse üle kanda.

Allikas: opennet.ru

Lisa kommentaar