visuals: move cellular-automaton to its own module

Scuffed impl.
This commit is contained in:
raf 2024-10-07 02:10:20 +03:00
commit ccd0582d09
Signed by: NotAShelf
GPG key ID: AF26552424E53993
6 changed files with 106 additions and 40 deletions

View file

@ -0,0 +1,39 @@
{
config,
lib,
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.strings) optionalString;
inherit (lib.nvim.lua) toLuaObject;
inherit (lib.nvim.dag) entryAnywhere entryAfter;
inherit (lib.nvim.binds) mkBinding;
cfg = config.vim.visuals.cellular-automaton;
in {
config = mkIf cfg.enable {
vim = {
startPlugins = ["cellular-automaton"];
maps.normal = mkBinding cfg.mappings.makeItRain "<cmd>CellularAutomaton make_it_rain<CR>" "Make it rain";
pluginRC = {
# XXX: This has no error handling. User can set
# `animation.setup` to a bogus value, and we would
# have an error in our hands. I don't think there
# is a good way to check for errors, so I'm leaving
# it like this under the assumption that the user
# will not mess it up for no reason.
cellular-automaton-anim = entryAnywhere (optionalString cfg.animation.register ''
-- Coerce user animation config into pluginRC
${toLuaObject cfg.animation.setup}
'');
cellular-automaton = entryAfter ["cellular-automaton-anim"] ''
-- Register the animation
require("cellular-automaton").register_animation(ca_config)
'';
};
};
};
}