Vydanie Neovim 0.7.0, modernizovaná verzia editora Vim

Bol vydaný Neovim 0.7.0, vidlica editora Vim zameraná na zvýšenie rozšíriteľnosti a flexibility. Projekt prerába základňu kódu Vim už viac ako sedem rokov, výsledkom čoho sú zmeny, ktoré zjednodušujú údržbu kódu, poskytujú prostriedok na rozdelenie práce medzi viacerých správcov, oddeľujú rozhranie od základnej časti (rozhranie môže byť zmenené bez toho, aby ste sa dotkli vnútorných častí) a implementujte novú rozšíriteľnú architektúru založenú na zásuvných moduloch. Pôvodný vývoj projektu je distribuovaný pod licenciou Apache 2.0 a základná časť je distribuovaná pod licenciou Vim. Pre Linux (appimage), Windows a macOS sú pripravené hotové zostavy.

Jedným z problémov Vimu, ktorý podnietil vytvorenie Neovimu, bola jeho nafúknutá, monolitická kódová základňa pozostávajúca z viac ako 300 tisíc riadkov kódu C (C89). Len málo ľudí rozumie všetkým nuansám kódovej základne Vim a všetky zmeny riadi jeden správca, čo sťažuje údržbu a vylepšovanie editora. Namiesto kódu zabudovaného do jadra Vim na podporu GUI, Neovim navrhuje použitie univerzálnej vrstvy, ktorá vám umožňuje vytvárať rozhrania pomocou rôznych súprav nástrojov.

Pluginy pre Neovim sa spúšťajú ako samostatné procesy, na interakciu s ktorými sa používa formát MessagePack. Interakcia s pluginmi prebieha asynchrónne, bez blokovania základných komponentov editora. Pre prístup k pluginu je možné použiť TCP socket, t.j. plugin je možné spustiť na externom systéme. Zároveň zostáva Neovim spätne kompatibilný s Vim, naďalej podporuje Vimscript (Lua sa ponúka ako alternatíva) a podporuje pripojenia pre väčšinu štandardných doplnkov Vim. Pokročilé funkcie Neovimu možno použiť v zásuvných moduloch vytvorených pomocou API špecifických pre Neovim.

V súčasnosti je už pripravených asi 130 špecifických pluginov, k dispozícii sú väzby na vytváranie pluginov a implementáciu rozhraní pomocou rôznych programovacích jazykov (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) a frameworkov (Qt, ncurses, Node .js, Electron, GTK). Vyvíja sa niekoľko možností používateľského rozhrania. Doplnky GUI sú veľmi podobné zásuvným modulom, ale na rozdiel od zásuvných modulov spúšťajú volania funkcií Neovimu, zatiaľ čo zásuvné moduly sa volajú z Neovimu.

Nová verzia ponúka počiatočnú podporu pre prácu na diaľku, čo vám umožňuje spustiť Neovim na serveri a pripojiť sa k nemu z klientskeho systému pomocou samostatného ui_client. Medzi ďalšie zmeny patrí: ukončená podpora pre Python 2, povolené používanie funkcií Lua v keymape, pridané nové príkazy do API, výrazne sa rozšírila možnosť používať jazyk Lua na vývoj pluginov a správu konfigurácií, boli vylepšené nástroje na diagnostiku problémov v kóde, bola pridaná podpora pre globálny stavový riadok, boli vykonané optimalizácie výkonu. Rozšírili sa možnosti vstavaného klienta LSP (Language Server Protocol), ktorý možno použiť na prenos logiky analýzy a dokončovania kódu na externé servery.

Zdroj: opennet.ru

Pridať komentár