I-Neovim 0.5 iyafumaneka, inguqulelo yale mihla yomhleli weVim

Emva kweminyaka ephantse ibe mibini yophuhliso, iNeovim 0.5 ikhutshiwe, ifolokhwe yomhleli weVim igxile ekwandiseni ukwandiswa kunye nokuguquguquka. Iprojekthi iye yasebenza kwakhona isiseko sekhowudi yeVim iminyaka engaphezu kwesixhenxe, ngenxa yoko utshintsho olwenziweyo olulula ukugcinwa kwekhowudi, ukubonelela ngeendlela zokwahlula umsebenzi phakathi kwabagcini abaninzi, ukwahlula i-interface ukusuka kwisiseko senxalenye (i-interface ingaba itshintshiwe ngaphandle kokubamba abangaphakathi) kwaye uphumeze ulwakhiwo olutsha olusekelwe kwiiplagi. Uphuhliso lwangaphambili lweprojekthi lusasazwa phantsi kwelayisensi ye-Apache 2.0, kwaye inxalenye esisiseko isasazwa phantsi kwelayisensi yeVim.

Enye yeengxaki zeVim eziye zabangela ukudalwa kwe-Neovim yi-bloated, i-monolithic codebase engaphezulu kwemigca ye-300 yekhowudi ye-C (C89). Bambalwa abantu abaqonda zonke iinqununu zekhowudi yeVim, kwaye zonke iinguqu zilawulwa ngumlondolozi omnye, okwenza kube nzima ukugcina nokusebenza ekuphuculeni umhleli. Endaweni yekhowudi eyakhelwe kwi-Vim core ukuxhasa i-GUI, i-Neovim iphakamisa ukusebenzisa umaleko wendalo yonke okuvumela ukuba wenze ujongano usebenzisa izixhobo ezahlukeneyo zezixhobo.

Iiplagi zeNeovim ziqaliswa njengeenkqubo ezahlukeneyo, zokunxibelelana apho kusetyenziswa ifomati yeMessagePack. Ukusebenzisana kunye ne-plug-ins kwenziwa kwimodi esynchronous, ngaphandle kokuthintela amacandelo asisiseko somhleli. I-socket ye-TCP ingasetyenziselwa ukufikelela kwiplagin, okt. iplagin ingasebenza kwindlela yangaphandle. Kwangaxeshanye, iNeovim ihlala ngasemva ihambelana neVim, iyaqhubeka nokuxhasa iVimscript (iLua inikezelwa njengenye indlela) kwaye ixhasa uqhagamshelo lweeplagi zeVim eziqhelekileyo. Iimpawu eziphambili zeNeovim zinokusetyenziswa kwiiplagi ezakhiwe kusetyenziswa iNeovim-specific API.

Okwangoku, malunga neeplagi ezithile ze-130 sele zilungisiwe, izibophelelo ziyafumaneka ekudaleni iiplagi kunye nokuphumeza ujongano kusetyenziswa iilwimi ezahlukeneyo zeprogram (C ++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) kunye nesikhokelo (Qt, ncurses, Node .js, Electron, GTK). Iinketho ezininzi zojongano lomsebenzisi ziyaphuhliswa. Izongezo ze-GUI zifana neeplagi ngeendlela ezininzi, kodwa ngokungafaniyo neeplagi, ziqalisa iifowuni kwimisebenzi ye-Neovim, ngelixa iiplagi zibizwa ngaphakathi kwe-Neovim.

Olunye utshintsho kwinguqulelo entsha:

  • Kongezwe umxhasi we-LSP eyakhelwe-ngaphakathi (iProtocol yeSeva yoLwimi) e-Lua, engasetyenziselwa ukuxhuma kwiinkonzo zangaphandle ukuhlalutya kunye nokugqitywa kwekhowudi.
  • Kongezwe i-API ukulawula uyilo lonikezelo buffers.
  • Yongeza i-API ukusebenzisa iithegi ezongeziweyo ukulandelela utshintsho kwinqanaba le-byte.
  • Inkxaso eyandisiweyo yeLua njengolwimi lophuhliso lwe-plugin kunye nolawulo loqwalaselo.
  • Inkxaso yovavanyo eyongeziweyo ye-injini yokwahlula i-tree-sitter.

umthombo: opennet.ru

Yongeza izimvo