K dispozici je Neovim 0.4, modernizovaná verze editoru Vim

zveřejněno uvolnění Neovim 0.4, fork z editoru Vim, soustředěný na zvýšení rozšiřitelnosti a flexibility. Původní vývoj projektu šíření pod licencí Apache 2.0 a základní část pod licencí Vim.

V rámci projektu Neovim se již více než pět let přepracovává základna 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í část (rozhraní lze změnit bez dotyku vnitřních částí) a implementovat novou rozšiřitelná architektura založené na pluginech.

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.

Již v současnosti připravený asi 80 specifických pluginů, vazeb je k dispozici pro vytváření pluginů a implementaci rozhraní pomocí různých programovacích jazyků (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) a frameworků (Qt5, ncurses, Node.js, Elektron, 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é ze změn v nová verze:

  • Přidána velká část nových funkcí API a událostí uživatelského rozhraní.
  • Přidána nová standardní knihovna Nvim-Lua pro vývoj pluginů v jazyce Lua.
  • Vývoj protokolu uživatelského rozhraní pokračuje a aktualizuje informace na obrazovce spíše na úrovni řádků než jednotlivých znaků.
  • Přidána podpora pro plnohodnotná plovoucí okna, která lze umístit na libovolné místo, připojit, propojit s jednotlivými editačními buffery a seskupit v režimu Multigrid.
  • Přidána možnost „pumblend“ pro průsvitné rozbalovací nabídky.

Zdroj: opennet.ru

Přidat komentář