În cadrul proiectului Neovim, baza de cod Vim a fost reproiectată de mai bine de cinci ani, în urma cărora se fac modificări care simplifică întreținerea codului, oferă un mijloc de împărțire a muncii între mai mulți întreținători, separă interfața de partea de bază (interfața poate fi schimbată fără a atinge elementele interne) și implementați o nouă
Una dintre problemele cu Vim care a determinat crearea lui Neovim a fost baza sa de cod umflată, monolitică, constând din peste 300 de mii de linii de cod C (C89). Doar puțini oameni înțeleg toate nuanțele bazei de cod Vim și toate modificările sunt controlate de un singur întreținător, ceea ce face dificilă întreținerea și îmbunătățirea editorului. În loc de codul încorporat în nucleul Vim pentru a sprijini GUI, Neovim propune utilizarea unui strat universal care vă permite să creați interfețe folosind diverse seturi de instrumente.
Pluginurile pentru Neovim sunt lansate ca procese separate, pentru interacțiunea cu care se folosește formatul MessagePack. Interacțiunea cu pluginurile se realizează asincron, fără a bloca componentele de bază ale editorului. Pentru a accesa pluginul, se poate folosi un socket TCP, de ex. pluginul poate fi rulat pe un sistem extern. În același timp, Neovim rămâne compatibil cu Vim, continuă să accepte Vimscript (Lua este oferit ca alternativă) și acceptă conexiuni pentru majoritatea pluginurilor Vim standard. Caracteristicile avansate ale Neovim pot fi utilizate în pluginuri create folosind API-uri specifice Neovim.
Deja în prezent
Unele dintre schimbările din
- S-a adăugat o mare parte de noi funcții API și evenimente de interfață cu utilizatorul.
- S-a adăugat o nouă bibliotecă standard Nvim-Lua pentru dezvoltarea plugin-urilor în limbajul Lua.
- Dezvoltarea protocolului de interfață cu utilizatorul continuă, actualizându-se informațiile de pe ecran la nivel de linii, mai degrabă decât caracterele individuale.
- S-a adăugat suport pentru ferestre plutitoare cu drepturi depline, care pot fi plasate în orice locație, atașate, legate la buffer-uri de editare individuale și grupate în modul Multigrid.
- S-a adăugat opțiunea „pumblend” pentru meniurile drop-down translucide.
Sursa: opennet.ru