Izdanje Neovim 0.6.0, modernizovana verzija Vim editora

Objavljen je Neovim 0.6.0, fork Vim editora fokusiran na povećanje proširivosti i fleksibilnosti. Projekat je prerađivao Vim kodnu bazu više od sedam godina, zbog čega su napravljene promjene koje pojednostavljuju održavanje koda, obezbjeđuju način podjele rada između nekoliko održavatelja, odvajaju interfejs od osnovnog dijela (interfejs se može promijenjen bez dodirivanja unutrašnjosti) i implementirati novu proširivu arhitekturu zasnovanu na dodacima. Originalni razvoji projekta distribuiraju se pod licencom Apache 2.0, a osnovni dio se distribuira pod Vim licencom. Gotovi sklopovi su pripremljeni za Linux (appimage), Windows i macOS.

Jedan od problema sa Vim-om koji je podstakao stvaranje Neovog bila je njegova naduvana, monolitna baza koda, koja se sastojala od više od 300 hiljada linija C (C89) koda. Samo nekoliko ljudi razumije sve nijanse Vimove kodne baze, a sve promjene kontrolira jedan održavatelj, što otežava održavanje i poboljšanje uređivača. Umesto koda ugrađenog u Vim jezgro za podršku GUI, Neovim predlaže korišćenje univerzalnog sloja koji vam omogućava da kreirate interfejse koristeći različite komplete alata.

Dodaci za Neovim se pokreću kao zasebni procesi, za interakciju sa kojima se koristi format MessagePack. Interakcija sa dodacima se odvija asinhrono, bez blokiranja osnovnih komponenti uređivača. Za pristup dodatku može se koristiti TCP socket, tj. dodatak se može pokrenuti na eksternom sistemu. Istovremeno, Neovim ostaje kompatibilan sa Vim-om, nastavlja da podržava Vimscript (Lua se nudi kao alternativa) i podržava veze za većinu standardnih Vim dodataka. Neovim napredne funkcije mogu se koristiti u dodacima napravljenim pomoću API-ja specifičnih za Neovim.

Trenutno je već pripremljeno oko 130 specifičnih dodataka, dostupni su vezovi za kreiranje dodataka i implementaciju interfejsa koristeći različite programske jezike (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) i okvire (Qt, ncurses, Node .js, Electron, GTK). Nekoliko opcija korisničkog interfejsa se razvija. GUI dodaci su slični dodacima, ali za razliku od dodataka, oni pokreću pozive Neovim funkcijama, dok se dodaci pozivaju iz Neovim.

Neke od promjena u novoj verziji:

  • Podrška za lokalne varijable je dodana vim skriptama, čiji je opseg ograničen samo trenutnom skriptom.
  • Značajno poboljšana podrška jezika Lua za razvoj dodataka i upravljanje konfiguracijom. U vim skriptama, mogućnost pozivanja Lua funkcija kao metoda je dodana specificiranjem v:lua prefiksa (na primjer, “arg1->v:lua.somemod.func(arg2)”).
  • Proširene su mogućnosti ugrađenog LSP klijenta (Language Server Protocol) koji se može koristiti za prijenos logike analize i kompletiranja koda na eksterne servere. Upotreba LSP-a vam omogućava da koristite više od 150 gotovih rukovalaca za različite programske jezike pripremljenih za Visual Studio Code editor.
  • Poboljšani alati za dijagnosticiranje problema u kodu. Dodata mogućnost prikaza teksta dijagnostičkih poruka i plutajućih prozora s kodom povezanim s takvim porukama. Omogućena je obrada dijagnostičkih poruka koje šalje LSP server.
  • Dodata podrška za virtuelne stringove, koji se mogu koristiti, na primjer, za prikaz blokova sa servisnim informacijama.
  • Napravljene su različite optimizacije performansi, na primjer, heš tablica je omogućena za istaknuta imena grupa.
  • Podrška za Windows 7 i 32-bitne verzije Windowsa je ukinuta.

izvor: opennet.ru

Dodajte komentar