Ang Neovim 0.5, usa ka moderno nga bersyon sa editor sa Vim, magamit

Pagkahuman sa hapit duha ka tuig nga pag-uswag, ang Neovim 0.5 gipagawas, usa ka tinidor sa editor sa Vim nga naka-focus sa pagdugang sa pagpalapad ug pagka-flexible. Ang proyekto nag-rework sa Vim code base sulod sa kapin sa pito ka tuig, isip usa ka resulta diin ang mga pagbag-o gihimo nga nagpayano sa pagmentinar sa code, naghatag og usa ka paagi sa pagbahin sa trabaho tali sa daghang mga tigmintinar, pagbulag sa interface gikan sa base nga bahin (ang interface mahimong nabag-o nga wala magtandog sa mga internal) ug ipatuman ang usa ka bag-ong extensible nga arkitektura base sa mga plugins. Ang orihinal nga mga kalamboan sa proyekto giapod-apod ubos sa Apache 2.0 nga lisensya, ug ang batakang bahin giapod-apod ubos sa Vim nga lisensya.

Usa sa mga problema sa Vim nga nag-aghat sa paghimo sa Neovim mao ang nagbuak, monolithic code base, nga naglangkob sa labaw sa 300 ka libo nga linya sa C (C89) code. Pipila lang ka mga tawo ang nakasabut sa tanan nga mga nuances sa Vim codebase, ug ang tanan nga mga pagbag-o gikontrol sa usa ka tigmentinar, nga nagpalisud sa pagpadayon ug pagpalambo sa editor. Imbis sa code nga gitukod sa Vim core aron suportahan ang GUI, gisugyot ni Neovim ang paggamit sa usa ka unibersal nga layer nga nagtugot kanimo sa paghimo og mga interface gamit ang lainlaing mga toolkit.

Ang mga plugin alang sa Neovim gilusad isip bulag nga mga proseso, alang sa interaksyon diin gigamit ang MessagePack format. Ang interaksyon sa mga plugin gihimo nga asynchronously, nga wala gibabagan ang mga sukaranan nga sangkap sa editor. Aron ma-access ang plugin, ang TCP socket mahimong magamit, i.e. ang plugin mahimong modagan sa usa ka eksternal nga sistema. Sa samang higayon, ang Neovim nagpabilin nga paatras nga nahiuyon sa Vim, nagpadayon sa pagsuporta sa Vimscript (Ang Lua gitanyag isip alternatibo) ug nagsuporta sa mga koneksyon alang sa kadaghanan nga standard Vim plugins. Ang mga advanced nga bahin sa Neovim mahimong magamit sa mga plugin nga gihimo gamit ang mga API nga piho sa Neovim.

Sa pagkakaron, mga 130 ka espesipikong mga plugin ang naandam na, ang mga binding anaa alang sa paghimo og mga plugins ug pagpatuman sa mga interface gamit ang nagkalain-laing mga programming language (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) ug mga frameworks (Qt, ncurses, Node .js, Electron, GTK). Daghang mga kapilian sa user interface ang gipalambo. Ang mga add-on sa GUI sama ra sa mga plugin, apan dili sama sa mga plugins, gisugdan nila ang mga tawag sa mga function sa Neovim, samtang ang mga plugin gitawag gikan sa sulod sa Neovim.

Pipila sa mga pagbag-o sa bag-ong bersyon:

  • Gidugang ang usa ka built-in nga kliyente sa LSP (Language Server Protocol) sa Lua, nga magamit aron makonektar sa mga serbisyo sa gawas alang sa pagtuki ug pagkompleto sa code.
  • Gidugang ang usa ka API aron makontrol ang laraw sa mga buffer sa alokasyon.
  • Gidugang ang usa ka API aron magamit ang gipalapdan nga mga tag aron masubay ang mga pagbag-o sa lebel sa byte.
  • Gipalapad nga suporta alang sa Lua isip usa ka pinulongan alang sa pagpalambo sa plugin ug pagdumala sa configuration.
  • Gidugang nga suporta sa eksperimento alang sa makina sa pag-parse sa kahoy.

Source: opennet.ru

Idugang sa usa ka comment