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

După aproape doi ani de dezvoltare, a fost lansat Neovim 0.5, o furcă a editorului Vim axată pe creșterea extensibilității și flexibilității. Proiectul a reprocesat baza de cod Vim de mai bine de șapte 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ă arhitectură extensibilă bazată pe pluginuri. Dezvoltarile originale ale proiectului sunt distribuite sub licenta Apache 2.0, iar partea de baza este distribuita sub licenta Vim.

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.

În prezent, aproximativ 130 de plugin-uri specifice au fost deja pregătite, sunt disponibile legături 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 (Qt, 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 modificările din noua versiune:

  • S-a adăugat un client LSP (Language Server Protocol) încorporat în Lua, care poate fi utilizat pentru a se conecta la servicii externe pentru analiză și completarea codului.
  • S-a adăugat un API pentru a controla proiectarea bufferelor de alocare.
  • S-a adăugat un API pentru a utiliza etichete extinse pentru a urmări modificările la nivel de octeți.
  • Suport extins pentru Lua ca limbaj pentru dezvoltarea pluginurilor și gestionarea configurației.
  • S-a adăugat suport experimental pentru motorul de analiză tree-sitter.

Sursa: opennet.ru

Adauga un comentariu