From a3f4b7b147198d94dac576b591c450a33d2e3fe0 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Sat, 7 Sep 2024 02:57:57 +0300 Subject: [PATCH] binds/which-key: start migrating to setupOpts --- .../utility/binds/which-key/config.nix | 28 ++++-------- .../utility/binds/which-key/which-key.nix | 44 +++++++++++++++++-- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/modules/plugins/utility/binds/which-key/config.nix b/modules/plugins/utility/binds/which-key/config.nix index d729688..2002f25 100644 --- a/modules/plugins/utility/binds/which-key/config.nix +++ b/modules/plugins/utility/binds/which-key/config.nix @@ -4,33 +4,21 @@ ... }: let inherit (lib.modules) mkIf; - inherit (lib.strings) optionalString; inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.dag) entryAnywhere; cfg = config.vim.binds.whichKey; in { config = mkIf cfg.enable { - vim.startPlugins = ["which-key"]; + vim = { + startPlugins = ["which-key"]; - vim.pluginRC.whichkey = entryAnywhere '' - local wk = require("which-key") - wk.setup ({ - key_labels = { - [""] = "SPACE", - [""] = "SPACE", - [""] = "RETURN", - [""] = "TAB", - }, + pluginRC.whichkey = entryAnywhere '' + local wk = require("which-key") - ${optionalString config.vim.ui.borders.plugins.which-key.enable '' - window = { - border = ${toLuaObject config.vim.ui.borders.plugins.which-key.style}, - }, - ''} - }) - - wk.register(${toLuaObject cfg.register}) - ''; + wk.setup (${toLuaObject cfg.setupOpts}) + wk.register(${toLuaObject cfg.register}) + ''; + }; }; } diff --git a/modules/plugins/utility/binds/which-key/which-key.nix b/modules/plugins/utility/binds/which-key/which-key.nix index 3851cd9..62342d1 100644 --- a/modules/plugins/utility/binds/which-key/which-key.nix +++ b/modules/plugins/utility/binds/which-key/which-key.nix @@ -1,6 +1,11 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption mkOption; - inherit (lib.types) attrsOf nullOr str; +{ + config, + lib, + ... +}: let + inherit (lib.options) mkOption mkEnableOption; + inherit (lib.types) attrsOf nullOr str attrs enum bool; + inherit (lib.nvim.types) mkPluginSetupOption; in { options.vim.binds.whichKey = { enable = mkEnableOption "which-key keybind helper menu"; @@ -10,5 +15,38 @@ in { type = attrsOf (nullOr str); default = {}; }; + + setupOpts = mkPluginSetupOption "which-key" { + preset = mkOption { + type = enum ["classic" "modern" "helix"]; + default = "modern"; + description = "The default preset for the which-key window"; + }; + + notify = mkOption { + type = bool; + default = false; # FIXME: this should be true before the merge + description = "Show a warning when issues were detected with mappings"; + }; + + replace = mkOption { + type = attrs; + default = { + "" = "SPACE"; + "" = "SPACE"; + "" = "RETURN"; + "" = "TAB"; + }; + description = "Functions/Lua Patterns for formatting the labels"; + }; + + win = { + border = mkOption { + type = str; + default = config.vim.ui.borders.plugins.which-key.style; + description = "Which-key window border style"; + }; + }; + }; }; }