Vydání Neovim 0.6.0, modernizovaná verze editoru Vim

Byl vydán Neovim 0.6.0, fork editoru Vim zaměřený na zvýšení rozšiřitelnosti a flexibility. Projekt již více než sedm let přepracovává základnu kódu Vim, v důsledku čehož dochází ke změnám, které zjednodušují údržbu kódu, poskytují prostředek pro rozdělení práce mezi několik správců, oddělují rozhraní od základní části (rozhraní může být změněno bez dotyku vnitřních částí) a implementovat novou rozšiřitelnou architekturu založenou na zásuvných modulech. Původní vývoj projektu je distribuován pod licencí Apache 2.0 a základní část je distribuována pod licencí Vim. Připravené sestavy jsou připraveny pro Linux (appimage), Windows a macOS.

Jedním z problémů Vimu, který podnítil vytvoření Neovimu, byla jeho nabušená, monolitická kódová základna sestávající z více než 300 tisíc řádků kódu C (C89). Jen málo lidí rozumí všem nuancím kódové základny Vim a všechny změny řídí jeden správce, což ztěžuje údržbu a vylepšování editoru. Namísto kódu zabudovaného do jádra Vim pro podporu GUI Neovim navrhuje použití univerzální vrstvy, která umožňuje vytvářet rozhraní pomocí různých sad nástrojů.

Pluginy pro Neovim jsou spouštěny jako samostatné procesy, pro interakci s nimiž se používá formát MessagePack. Interakce s pluginy probíhá asynchronně, bez blokování základních komponent editoru. Pro přístup k pluginu lze použít TCP socket, tzn. plugin lze spustit na externím systému. Neovim zároveň zůstává zpětně kompatibilní s Vim, nadále podporuje Vimscript (Lua je nabízena jako alternativa) a podporuje připojení pro většinu standardních pluginů Vim. Pokročilé funkce Neovimu lze použít v zásuvných modulech vytvořených pomocí API specifických pro Neovim.

V současné době je již připraveno asi 130 konkrétních pluginů, k dispozici jsou vazby pro tvorbu pluginů a implementaci rozhraní pomocí různých programovacích jazyků (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) a frameworků (Qt, ncurses, Node .js, Electron, GTK). Vyvíjí se několik možností uživatelského rozhraní. Doplňky GUI jsou velmi podobné pluginům, ale na rozdíl od pluginů iniciují volání funkcí Neovimu, zatímco pluginy jsou volány z Neovimu.

Některé změny v nové verzi:

  • Do vim skriptů byla přidána podpora lokálních proměnných, jejichž rozsah je omezen pouze aktuálním skriptem.
  • Výrazně vylepšená podpora jazyka Lua pro vývoj pluginů a správu konfigurace. Ve skriptech vim byla přidána možnost volat funkce Lua jako metody zadáním předpony v:lua (například „arg1->v:lua.somemod.func(arg2)“).
  • Byly rozšířeny možnosti vestavěného klienta LSP (Language Server Protocol), který lze použít k přenosu analytické logiky a dokončování kódu na externí servery. Použití LSP vám umožňuje používat více než 150 hotových handlerů pro různé programovací jazyky připravených pro editor kódu Visual Studio.
  • Vylepšené nástroje pro diagnostiku problémů v kódu. Přidána možnost zobrazení textu diagnostických zpráv a plovoucích oken s kódem spojeným s takovými zprávami. Je zajištěno zpracování diagnostických zpráv přenášených serverem LSP.
  • Přidána podpora virtuálních řetězců, které lze využít například pro zobrazení bloků s informacemi o službách.
  • Byly provedeny různé optimalizace výkonu, například je povolena hashovací tabulka pro zvýrazněné názvy skupin.
  • Podpora pro Windows 7 a 32bitové sestavení Windows byla ukončena.

Zdroj: opennet.ru

Přidat komentář