Neovim 0.5 on saatavilla, modernisoitu versio Vim-editorista

Lähes kahden vuoden kehitystyön jälkeen on julkaistu Neovim 0.5, Vim-editorin haarukka, joka keskittyi laajennettavuuden ja joustavuuden lisäämiseen. Projektissa on muokattu Vim-koodipohjaa yli seitsemän vuoden ajan, minkä seurauksena tehdään muutoksia, jotka yksinkertaistavat koodin ylläpitoa, tarjoavat mahdollisuuden työnjakoon useiden ylläpitäjien kesken, erottavat rajapinnan perusosasta (rajapinta voidaan muutettu koskematta sisäosaan) ja ottaa käyttöön uusi laajennettava arkkitehtuuri, joka perustuu laajennuksiin. Projektin alkuperäiset kehitystyöt jaetaan Apache 2.0 -lisenssillä ja perusosa Vim-lisenssillä.

Yksi Vim-ongelmista, jotka saivat aikaan Neovimin luomisen, on paisunut, monoliittinen koodikanta, jossa on yli 300 89 riviä C-koodia (CXNUMX). Vain harvat ihmiset ymmärtävät Vim-koodikannan kaikki vivahteet, ja kaikkia muutoksia hallitsee yksi ylläpitäjä, mikä vaikeuttaa editorin ylläpitoa ja parantamista. GUI:ta tukevan Vim-ytimeen sisäänrakennetun koodin sijaan Neovim ehdottaa universaalin kerroksen käyttöä, jonka avulla voit luoda käyttöliittymiä erilaisilla työkalusarjoilla.

Neovimin lisäosat käynnistetään erillisinä prosesseina, joiden kanssa MessagePack-muotoa käytetään. Vuorovaikutus laajennusten kanssa suoritetaan asynkronisessa tilassa ilman, että editorin peruskomponentit estetään. TCP-pistorasiaa voidaan käyttää liitännäiseen pääsyyn, ts. laajennus voi toimia ulkoisessa järjestelmässä. Samaan aikaan Neovim pysyy taaksepäin yhteensopivana Vimin kanssa, tukee edelleen Vimscriptiä (Lua tarjotaan vaihtoehtona) ja tukee useimpien tavallisten Vim-laajennusten yhdistämistä. Neovimin edistyneitä ominaisuuksia voidaan käyttää laajennuksissa, jotka on rakennettu Neovim-kohtaisen API:n avulla.

Tällä hetkellä valmiina on jo noin 130 erityistä lisäosaa, sidoksia on saatavilla lisäosien luomiseen ja käyttöliittymien toteuttamiseen eri ohjelmointikielillä (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) ja kehyksillä (Qt, ncurses, Node .js, Electron, GTK). Useita käyttöliittymävaihtoehtoja kehitetään. GUI-lisäosat ovat paljon kuin laajennuksia, mutta toisin kuin laajennukset, ne käynnistävät kutsuja Neovim-toimintoihin, kun taas laajennuksia kutsutaan Neovimin sisältä.

Joitakin muutoksia uuteen versioon:

  • Lisätty sisäänrakennettu LSP-asiakas (Language Server Protocol) Luaan, jota voidaan käyttää yhteyden muodostamiseen ulkoisiin palveluihin analysointia ja koodin viimeistelyä varten.
  • Lisätty API ohjaamaan allokointipuskurien suunnittelua.
  • Lisätty API, joka käyttää laajennettuja tunnisteita muutosten seuraamiseen tavutasolla.
  • Laajennettu tuki Lualle kielenä laajennusten kehittämiseen ja asetusten hallintaan.
  • Lisätty kokeellinen tuki puunsihtijän jäsennysmoottorille.

Lähde: opennet.ru

Lisää kommentti