Pagpagawas sa Neovim 0.7.0, usa ka moderno nga bersyon sa editor sa Vim

Gipagawas ang Neovim 0.7.0, 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 resulta sa mga pagbag-o nga gihimo nga nagpayano sa pagmentinar sa code, naghatag og usa ka paagi sa pagbahin sa trabaho tali sa daghang mga maintainers, pagbulag sa interface gikan sa base nga bahin (ang interface mahimong nabag-o nga wala magtandog sa mga internals) ug nagpatuman sa 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 gipang-apod-apod ubos sa Vim nga lisensya. Ang mga andam nga asembliya giandam alang sa Linux (appimage), Windows ug macOS.

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.

Ang bag-ong bersyon nagtanyag og inisyal nga suporta alang sa hilit nga trabaho, nga nagtugot kanimo sa pagpadagan sa Neovim sa server ug pagkonektar niini gikan sa sistema sa kliyente gamit ang usa ka bulag nga ui_client. Ang uban nga mga pagbag-o naglakip sa: suporta alang sa Python 2 gihunong na, ang paggamit sa Lua functions sa keymap gitugutan, bag-ong mga sugo gidugang sa API, ang abilidad sa paggamit sa Lua nga pinulongan alang sa pagpalambo sa mga plugins ug pagdumala sa configuration kay gipalapdan pag-ayo, Ang mga himan alang sa pag-diagnose sa mga problema sa code gipauswag, suporta alang sa global status bar gidugang, ang mga pag-optimize sa pasundayag gihimo. Ang mga kapabilidad sa built-in nga LSP nga kliyente (Language Server Protocol) gipalapdan, nga magamit sa pagbalhin sa lohika sa pagtuki ug pagkompleto sa code sa mga eksternal nga server.

Source: opennet.ru

Idugang sa usa ka comment