Është publikuar lirimi i Neovim 0.7.0, një degë nga redaktori Vim, e cila fokusohet në përmirësimin e zgjerueshmërisë dhe fleksibilitetit. Që prej më shumë se pesë vjetësh, projekti ka qenë në një ripërpunim të kodit të bazës së Vim, duke futur ndryshime që thjeshtojnë mirëmbajtjen e kodit, ofrojnë mjete për ndarjen e punës midis disa mbajtësve, ndajnë ndërfaqen nga pjesa bazë (ndërfaqja mund të ndryshohet pa prekur mbrendësitë) dhe realizojnë një arkitekturë të re zgjeruese në bazë të plug-in-eve. Materialet origjinale të projektit shpërndahen nën licencën Apache 2.0, ndërsa pjesa bazë nën licencën Vim. Ndërkohë, ndërtimet e gatshme janë përgatitur për Linux (appimage), Windows dhe macOS.
Një nga problemet e Vim-it që çoi në krijimin e Neovim janë bazat e kodit monolit, të fryra, që përmbajnë më shumë se 300 mijë rreshta kodi në gjuhën C (C89). Në të gjitha nuancat e bazës së kodit të Vim-it, vetëm disa persona e kuptojnë, dhe të gjitha ndryshimet kontrollohen nga një mbajtës, çka e vështirëson mbështetje dhe punën për përmirësimin e editorit. Në vend të kodit të integruar në kernelin e Vim për mbështetje GUI, Neovim ofron një ndërfaqe universale që lejon krijimin e ndërfaqeve duke përdorur toolkit të ndryshme.
Pluginet për Neovim ekzekutohen si procese të veçanta, për interaksionin me të cilat përdoret formati MessagePack. Bashkëpunimi me pluginet bëhet në mënyrë asinkrone, pa bllokimin e komponentëve bazë të editorit. Një socket TCP mund të përdoret për të komunikuar me pluginin, pra, plugin mund të ekzekutohet në një sistem të jashtëm. Në të njëjtën kohë, Neovim mbetet e përputhshme me Vim, vazhdon të mbështesë Vimscript (si alternativë ofrohet Lua) dhe mbështet lidhjet e shumicës së pluginave standarde të Vim. Mundësitë e avancuara të Neovim mund të përdoren në pluginet e krijuara duke përdorur API-në specifike për Neovim.
Aktualisht janë përgatitur rreth 130 plugins specifikë, janë në dispozicion lidhjet për krijimin e plugins dhe implementimeve të ndërfaqeve duke përdorur gjuhë të ndryshme programimi (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) dhe framework-u (Qt, ncurses, Node.js, Electron, GTK). Po zhvillohen disa variante të ndërfaqes së përdoruesit. Shtesat GUI janë shumë të ngjashme me plugins, por, ndryshe nga plugins, ato inicojnë thirrjen e funksioneve Neovim, ndërsa plugins thirren nga Neovim.
Në versionin e ri është propozuar mbështetje fillestare për punën e largët, e cila lejon që Neovim të startohet në serveri dhe të lidheni me të nga sistemi klient, duke përdorur një ui_client të veçantë. Ndër ndryshime të tjera: është ndalur mbështetje për Python 2, është lejuar përdorimi i funksioneve Lua në keymap, janë shtuar komandat e reja në API, janë zgjeruar në masë të madhe mundësitë për përdorimin e gjuhës Lua për zhvillimin e plugineve dhe menaxhimin e konfiguracionit, janë përmirësuar mjetet për diagnostikimin e problemeve në kod, është shtuar mbështetje për varg global të gjendjes, janë kryer optimizime të performancës. Janë zgjeruar mundësitë e klientit të integruar LSP (Protokolli i Serverit të Gjuhës), i cili mund të përdoret për të ndarë logjikën e analizës dhe plotësimit automatik të kodit në jashtë. hostingut.
Burimi: opennet.ru
