Neovim 0.5, modernigita versio de la Vim-redaktilo, estas havebla

Post preskaŭ du jaroj da evoluo, Neovim 0.5 estis liberigita, forko de la Vim-redaktilo koncentriĝis pri pliigado de etendebleco kaj fleksebleco. La projekto relaboras la Vim-kodbazon dum pli ol sep jaroj, rezulte de kiuj ŝanĝoj estas faritaj, kiuj simpligas kodan prizorgadon, disponigas rimedon por dividi laboron inter pluraj prizorgantoj, apartigas la interfacon de la baza parto (la interfaco povas esti ŝanĝita sen tuŝi la internaĵojn) kaj efektivigi novan etendeblan arkitekturon surbaze de kromaĵoj. La originaj evoluoj de la projekto estas distribuitaj sub la permesilo Apache 2.0, kaj la baza parto estas distribuita sub la permesilo Vim.

Unu el la problemoj kun Vim, kiuj instigis la kreadon de Neovim, estis ĝia ŝvelinta, monolita kodbazo, konsistanta el pli ol 300 mil linioj de C (C89) kodo. Nur kelkaj homoj komprenas ĉiujn nuancojn de la Vim-kodbazo, kaj ĉiuj ŝanĝoj estas kontrolataj de unu prizorganto, kio malfaciligas konservi kaj plibonigi la redaktilon. Anstataŭ la kodo konstruita en la Vim-kernon por subteni la GUI, Neovim proponas uzi universalan tavolon, kiu ebligas al vi krei interfacojn uzante diversajn ilaron.

Kromaĵoj por Neovim estas lanĉitaj kiel apartaj procezoj, por interagado kun kiu la MessagePack-formato estas uzata. Interago kun kromaĵoj estas farata nesinkrone, sen blokado de la bazaj komponantoj de la redaktilo. Por aliri la kromprogramon, TCP-ingo povas esti uzata, t.e. la kromaĵo povas ruliĝi sur ekstera sistemo. Samtempe, Neovim restas malantaŭen kongrua kun Vim, daŭre subtenas Vimscript (Lua estas ofertita kiel alternativo) kaj subtenas konektojn por la plej multaj normaj Vim-kromaĵoj. La altnivelaj funkcioj de Neovim povas esti uzataj en kromaĵoj konstruitaj per Neovim-specifaj API-oj.

Nuntempe, proksimume 130 specifaj kromprogramoj jam estis preparitaj, ligoj disponeblas por krei kromaĵojn kaj efektivigi interfacojn uzante diversajn programlingvojn (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) kaj kadrojn (Qt, ncurses, Node .js, Electron, GTK). Pluraj opcioj de uzantinterfaco estas evoluigitaj. GUI-aldonaĵoj estas tre kiel aldonaĵoj, sed male al aldonaĵoj, ili iniciatas alvokojn al Neovim-funkcioj, dum aldonaĵoj estas nomitaj de ene de Neovim.

Kelkaj el la ŝanĝoj en la nova versio:

  • Aldonita enkonstruita LSP-kliento (Lingva Servila Protokolo) en Lua, kiu povas esti uzata por konekti al eksteraj servoj por analizo kaj kodkompletigo.
  • Aldonita API por kontroli la dezajnon de asigno-bufroj.
  • Aldonis API por uzi plilongigitajn etikedojn por spuri ŝanĝojn je la bajta nivelo.
  • Plivastigita subteno por Lua kiel lingvo por disvolvado de kromprogramoj kaj agorda administrado.
  • Aldonita eksperimenta subteno por la analiza motoro de arbo-sidanto.

fonto: opennet.ru

Aldoni komenton