ĂshtĂ« publikuar lĂ«shimi i Neovim 0.6.0, njĂ« degĂ«zim i redaktorit Vim qĂ« fokusohet nĂ« rritjen e zgjerueshmĂ«risĂ« dhe fleksibilitetit. PjesĂ« e projektit Ă«shtĂ« ribĂ«rja e bazĂ«s sĂ« kodit tĂ« Vim pĂ«r mĂ« shumĂ« se pesĂ« vjet, e cila sjell ndryshime qĂ« lehtĂ«sojnĂ« mbĂ«shtetje tĂ« kodit, ofrojnĂ« mjete pĂ«r ndarjen e punĂ«s midis disa mbajtĂ«sve, ndajnĂ« ndĂ«rfaqen nga pjesa bĂ«rthamore (ndĂ«rfaqja mund tĂ« ndryshojĂ« pa prekur brendĂ«sinĂ«) dhe implementojnĂ« njĂ« arkitekturĂ« tĂ« re tĂ« zgjerueshme bazuar nĂ« shtesa. TĂ« dhĂ«nat origjinale tĂ« projektit shpĂ«rndahen nĂ«n licencĂ«n Apache 2.0, ndĂ«rsa pjesa bĂ«rthamore nĂ«n licencĂ«n Vim. 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.
Disa nga ndryshimet në versionin e ri:
- Në skriptet vim, është shtuar mbështetje për variabla lokalë, - të cilëve sfera e ndikimit është e kufizuar vetëm në skriptin aktual.
- Mbështetja për gjuhën Lua për zhvillimin e shtesave dhe menaxhimin e konfiguracionit është përmirësuar ndjeshëm. Në skriptet vim, është shtuar mundësia për të thirrur funksione Lua si metoda përmes caktimit të parashtesës v:lua (për shembull, "arg1->v:lua.somemod.func(arg2)").
- Janë zgjeruar mundësitë e klientit të intégruar LSP (Protokolli i Shërbimit të Gjuhës), i cili mund të përdoret për të transferuar logjikën e analizës dhe autoshkarkimit të kodit në jashtë. hostingut. Përdorimi i LSP lejon përdorimin e më shumë se 150 përpunuesve të gatshëm për gjuhë të ndryshme programimi, të përgatitur për redaktorin e kodit Visual Studio Code.
- JanĂ« pĂ«rmirĂ«suar mjetet pĂ«r diagnostikimin e problemeve nĂ« kod. ĂshtĂ« shtuar mundĂ«sia e shfaqjes sĂ« mesazheve diagnostikuese dhe dritareve peizazh me kodin e lidhur me kĂ«to mesazhe. ĂshtĂ« siguruar pĂ«rpunimi i mesazheve diagnostikuese qĂ« transmetohen nga serveri LSP.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r rreshta virtualĂ«, tĂ« cilĂ«t mund tĂ« pĂ«rdoren, pĂ«r shembull, pĂ«r shfaqjen e skenave me informacion shĂ«rbimi.
- Janë bërë optimizime të ndryshme të performancës, për shembull, është përdorur një tabelë hashe për emrat e grupeve që ndriçohen.
- ĂshtĂ« ndĂ«rprerĂ« mbĂ«shtetja pĂ«r Windows 7 dhe ndĂ«rtimet 32-bit pĂ«r Windows.
Burimi: opennet.ru
