Software-update - Neovim 0.12.0
In dit artikel:
Neovim, de opensource terminalteksteditor die sinds 2014 als fork en moderne erfgenaam van Vim bestaat, heeft recent versie 0.12.0 uitgebracht. Deze release brengt zowel ingrijpende breaking changes als veel nieuwe functies en standaardwijzigingen die gericht zijn op betere veiligheid, prestaties, API-consistentie en uitbreidbaarheid voor plug-ins en UIs.
Wat en wie: de Neovim-community en ontwikkelaars hebben meerdere API-aanpassingen doorgevoerd, LSP- en diagnostics-updates, verbeteringen aan de editor en events, en wijzigingen in build-opties en standaardinstellingen. Gebruikers van Lua-configuraties en plug-ins, LSP-clients en UI-projecten worden het meest geraakt.
Belangrijkste breaking changes (aanpassingen aan configuratie/plug-ins mogelijk vereist)
- Sommige API-returnwaarden veranderen: nvim_get_commands() geeft nu functies terug (bijv. complete als Lua-functie).
- Diagnostics: configuratie via sign_define() voor diagnostic-signs is verwijderd; functies zoals vim.diagnostic.disable() en de oude signature van vim.diagnostic.enable() zijn verwijderd.
- Editorgedrag: i_CTRL-R plakt registers nu letterlijk (verbeterd voor performance/formatting); URI-parsing volgt RFC3986 strikter.
- Security: op Windows zoekt Nvim niet meer automatisch de huidige map naar uitvoerbare bestanden — relative/absolute paden moeten worden geprefixt.
- UI-events zijn aangepast en sommige legacy events verwijderd of hergebruikt, wat minder UI-eventverkeer en meer flexibiliteit oplevert.
- LSP: JSON null-waarden worden als vim.NIL weergegeven; enkele API-namen en gedragingen zijn gewijzigd (bijv. semantic_tokens start()/stop() → enable()).
Belangrijkste nieuwe features en verbeteringen
- API: nieuwe helpers zoals nvim_win_text_height(), nvim_ui_send() (stuur arbitrary data naar UI), uitgebreidere nvim_echo() (inclusief progress-berichten), en nvim_open_tabpage().
- Floating windows kunnen nu een statusline tonen; nvim_win_set_config() kan vensters tussen tabpages verplaatsen.
- EXPERIMENTEEL: nvim__exec_lua_fast() voor remote clients om Lua uit te voeren tijdens blocking input.
- Decoration provider ondersteunt on_range; vim.secure.trust() en read() kregen verbeterde gedrag.
- Build: experimentele Zig-gebaseerde build en mogelijkheid te bouwen zonder Unibilium; Windows-distributie bevat nu tee.exe zodat :make/:grep direct werken.
- Defaults en usability: nieuwe default 'diffopt' en zichtbare statusline-expressie; project-local exrc wordt doorzocht in ouderdirectories (kan uitgezet); shada sluit /tmp en /private uit; Treesitter-highlighting voor Markdown ingeschakeld.
- Editorcommando’s en workflows: :iput, verbeterde :retab, :uniq, betere help-omnicompletion en :help! DWIM, prompt-buffer verbeterd (multiline, undo), wildchar completion in zoekopdrachten, en veiligere exrc-trustflow (view then :trust).
- Diagnostics/verwerking: mogelijkheden om diagnostics te filteren en formatteren bij setloclist/setqflist, statusoverzichten en merging van multiline compilerberichten.
- Events: nieuwe of aangepaste ui-protocol events, CmdlineLeave/Pre veranderingen en Progress/MarkSet triggers.
Impact en advies
Door de breaking changes kunnen bestaande configuraties en plug-ins breken; ontwikkelaars en power-users wordt aangeraden hun setups en afhankelijkheden te testen en waar nodig aan te passen. Veel veranderingen verplaatsen Neovim richting duidelijkere API-contracten, hogere veiligheid en betere integratie met moderne editor-ecosystemen (Lua, LSP, Treesitter). Voor wie stabiel wil blijven gebruiken is het raadzaam overgangsdocumentatie en plug-in-updates te volgen voordat je naar 0.12.0 migreert.