diff --git a/modules/plugins/utility/binds/which-key/config.nix b/modules/plugins/utility/binds/which-key/config.nix index d729688..e4d03cb 100644 --- a/modules/plugins/utility/binds/which-key/config.nix +++ b/modules/plugins/utility/binds/which-key/config.nix @@ -4,33 +4,20 @@ ... }: 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", - }, - - ${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}) - ''; + pluginRC.whichkey = entryAnywhere '' + local wk = require("which-key") + wk.setup (${toLuaObject cfg.setupOpts}) + wk.register(${toLuaObject cfg.register}) + ''; + }; }; } diff --git a/modules/plugins/utility/binds/which-key/default.nix b/modules/plugins/utility/binds/which-key/default.nix index 20c9cdf..7ae329b 100644 --- a/modules/plugins/utility/binds/which-key/default.nix +++ b/modules/plugins/utility/binds/which-key/default.nix @@ -1,4 +1,4 @@ -_: { +{ imports = [ ./which-key.nix ./config.nix diff --git a/modules/plugins/utility/binds/which-key/which-key.nix b/modules/plugins/utility/binds/which-key/which-key.nix index 3851cd9..c4bb1d7 100644 --- a/modules/plugins/utility/binds/which-key/which-key.nix +++ b/modules/plugins/utility/binds/which-key/which-key.nix @@ -1,14 +1,51 @@ -{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"; - register = mkOption { - description = "Register label for which-key keybind helper menu"; type = attrsOf (nullOr str); default = {}; + description = "Register label for which-key keybind helper menu"; + }; + + 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 = true; + 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"; + }; + }; }; }; }