From 658d38023280ff79293800a8bb0e5cd47d855630 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Mon, 7 Oct 2024 01:31:54 +0300 Subject: [PATCH] visuals: move cinnamon-nvim to its own module; deprecate smoothScroll The option visuals.smoothScroll was confusing as there can be more than one backend. --- .../visuals/cinnamon-nvim/cinnamon-nvim.nix | 38 +++++++++++++++++++ .../plugins/visuals/cinnamon-nvim/config.nix | 21 ++++++++++ .../plugins/visuals/cinnamon-nvim/default.nix | 6 +++ modules/plugins/visuals/default.nix | 3 +- modules/plugins/visuals/visuals.nix | 6 +-- 5 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix create mode 100644 modules/plugins/visuals/cinnamon-nvim/config.nix create mode 100644 modules/plugins/visuals/cinnamon-nvim/default.nix diff --git a/modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix b/modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix new file mode 100644 index 00000000..1d3ee7f5 --- /dev/null +++ b/modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix @@ -0,0 +1,38 @@ +{lib, ...}: let + inherit (lib.modules) mkRemovedOptionModule; + inherit (lib.options) mkOption mkEnableOption; + inherit (lib.types) submodule attrs; + inherit (lib.nvim.types) mkPluginSetupOption; +in { + imports = [ + (mkRemovedOptionModule ["vim" "visuals" "smoothScroll"] '' + `vim.visuals.smoothScroll` has been removed. You may consider enabling the + option `vim.visuals.cinnamon-nvim` to repliace previous smooth scrolling + behaviour. + '') + ]; + + options.vim.visuals.cinnamon-nvim = { + enable = mkEnableOption "smooth scrolling for ANY command [cinnamon-nvim]"; + setupOpts = mkPluginSetupOption "cinnamon.nvim" { + options = mkOption { + type = attrs; + default = { + # Defaults provided for the sake of documentation only! + # Who would've guessed setupOpts.options would be confusing? + mode = "cursor"; + count_only = false; + }; + description = "Scroll options"; + }; + + keymaps = mkOption { + description = "Keymap options for Cinnamon. Please see documentation before enablg"; + type = submodule { + basic = mkEnableOption "basic animation keymaps"; + extra = mkEnableOption "extra animation keymaps"; + }; + }; + }; + }; +} diff --git a/modules/plugins/visuals/cinnamon-nvim/config.nix b/modules/plugins/visuals/cinnamon-nvim/config.nix new file mode 100644 index 00000000..8e420221 --- /dev/null +++ b/modules/plugins/visuals/cinnamon-nvim/config.nix @@ -0,0 +1,21 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.nvim.lua) toLuaObject; + inherit (lib.nvim.dag) entryAnywhere; + + cfg = config.vim.visuals.cinnamon-nvim; +in { + config = mkIf cfg.enable { + vim = { + startPlugins = ["cinnamon-nvim"]; + + pluginRC.cursorline = entryAnywhere '' + require("cinnamon").setup(${toLuaObject cfg.setupOpts}) + ''; + }; + }; +} diff --git a/modules/plugins/visuals/cinnamon-nvim/default.nix b/modules/plugins/visuals/cinnamon-nvim/default.nix new file mode 100644 index 00000000..29ced8e8 --- /dev/null +++ b/modules/plugins/visuals/cinnamon-nvim/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./config.nix + ./cinnamon-nvim.nix + ]; +} diff --git a/modules/plugins/visuals/default.nix b/modules/plugins/visuals/default.nix index 2c69947f..57eb3295 100644 --- a/modules/plugins/visuals/default.nix +++ b/modules/plugins/visuals/default.nix @@ -1,6 +1,7 @@ { imports = [ - ./fidget + ./cinnamon-nvim + ./fidget-nvim ./indent-blankline ./nvim-cursorline ./nvim-scrollbar diff --git a/modules/plugins/visuals/visuals.nix b/modules/plugins/visuals/visuals.nix index 0e7b357f..8ce416db 100644 --- a/modules/plugins/visuals/visuals.nix +++ b/modules/plugins/visuals/visuals.nix @@ -3,8 +3,8 @@ lib, ... }: let - inherit (lib.options) mkEnableOption mkOption literalExpression; - inherit (lib.types) int bool str nullOr either listOf attrsOf; + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.types) int bool str; inherit (lib.nvim.binds) mkMappingOption; cfg = config.vim.visuals; @@ -12,8 +12,6 @@ in { options.vim.visuals = { enable = mkEnableOption "Visual enhancements."; - smoothScroll.enable = mkEnableOption "smooth scrolling [cinnamon-nvim]"; - cellularAutomaton = { enable = mkEnableOption "cellular automaton [cellular-automaton]";