Neovim 0.4, o versiune modernizată a editorului Vim, este disponibilă

publicat eliberare Neovim 0.4, o furcă de la editorul Vim, concentrat pe creșterea extensibilității și flexibilității. Evoluții originale ale proiectului răspândire sub licența Apache 2.0, iar partea de bază sub licența Vim.

Î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ă arhitectura extensibila bazat pe pluginuri.

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 pregătit aproximativ 80 de plugin-uri specifice, legături sunt disponibile pentru crearea de plugin-uri și implementarea interfețelor folosind diverse limbaje de programare (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) și cadre (Qt5, ncurses, Node.js, Electron, GTK+). Mai multe opțiuni de interfață cu utilizatorul sunt în curs de dezvoltare. Suplimentele GUI seamănă mult cu pluginurile, dar spre deosebire de pluginuri, acestea inițiază apeluri la funcțiile Neovim, în timp ce pluginurile sunt apelate din interiorul Neovim.

Unele dintre schimbările din versiune noua:

  • 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

Adauga un comentariu