From 29b9bd4db0c67a3b9d2bd4aa5ec6763d96997788 Mon Sep 17 00:00:00 2001 From: Frothy <76622149+FrothyMarrow@users.noreply.github.com> Date: Tue, 20 Feb 2024 22:15:18 -0500 Subject: [PATCH] utility/binds/which-key: allow configurable category labels --- modules/utility/binds/which-key/config.nix | 105 ++---------------- modules/utility/binds/which-key/which-key.nix | 15 ++- 2 files changed, 20 insertions(+), 100 deletions(-) diff --git a/modules/utility/binds/which-key/config.nix b/modules/utility/binds/which-key/config.nix index 6e2a83c..238d888 100644 --- a/modules/utility/binds/which-key/config.nix +++ b/modules/utility/binds/which-key/config.nix @@ -3,14 +3,17 @@ lib, ... }: let - inherit (lib) mkIf nvim; + 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.luaConfigRC.whichkey = nvim.dag.entryAnywhere '' + vim.luaConfigRC.whichkey = entryAnywhere '' local wk = require("which-key") wk.setup ({ key_labels = { @@ -20,108 +23,14 @@ in { [""] = "TAB", }, - ${lib.optionalString (config.vim.ui.borders.plugins.which-key.enable) '' + ${optionalString (config.vim.ui.borders.plugins.which-key.enable) '' window = { border = "${config.vim.ui.borders.plugins.which-key.style}", }, ''} }) - wk.register({ - ${ - if config.vim.tabline.nvimBufferline.enable - then '' - -- Buffer - ["b"] = { name = "+Buffer" }, - ["bm"] = { name = "BufferLineMove" }, - ["bs"] = { name = "BufferLineSort" }, - ["bsi"] = { name = "BufferLineSortById" }, - '' - else "" - } - - ${ - if config.vim.telescope.enable - then '' - ["f"] = { name = "+Telescope" }, - -- Telescope - ["fl"] = { name = "Telescope LSP" }, - ["fm"] = { name = "Cellular Automaton" }, -- TODO: mvoe this to its own parent group - ["fv"] = { name = "Telescope Git" }, - ["fvc"] = { name = "Commits" }, - '' - else "" - } - - ${ - if config.vim.lsp.trouble.enable - then '' - -- Trouble - ["lw"] = { name = "Workspace" }, - ["x"] = { name = "+Trouble" }, -- TODO: move all trouble binds to the same parent group - ["l"] = { name = "+Trouble" }, - '' - else "" - } - - ${ - if config.vim.lsp.nvimCodeActionMenu.enable - then '' - -- Parent Groups - ["c"] = { name = "+CodeAction" }, - '' - else "" - } - - ${ - if config.vim.minimap.codewindow.enable || config.vim.minimap.minimap-vim.enable - then '' - -- Minimap - ["m"] = { name = "+Minimap" }, -- TODO: remap both minimap plugins' keys to be the same - '' - else "" - } - - ${ - if config.vim.notes.mind-nvim.enable || config.vim.notes.obsidian.enable || config.vim.notes.orgmode.enable - then '' - -- Notes - ["o"] = { name = "+Notes" }, - -- TODO: options for other note taking plugins and their individual binds - -- TODO: move all note-taker binds under leader + o - '' - else "" - } - - ${ - # TODO: This probably will need to be reworked for custom-keybinds - if config.vim.filetree.nvimTree.enable - then '' - -- NvimTree - ["t"] = { name = "+NvimTree" }, - '' - else "" - } - - ${ - if config.vim.git.gitsigns.enable - then '' - -- Git - ["g"] = { name = "+Gitsigns" }, - '' - else "" - } - - ${ - if config.vim.utility.preview.glow.enable - then '' - -- Markdown - ["pm"] = { name = "+Preview Markdown" }, - '' - else "" - } - - }) + wk.register(${toLuaObject cfg.register}) ''; }; } diff --git a/modules/utility/binds/which-key/which-key.nix b/modules/utility/binds/which-key/which-key.nix index ceba7de..796dc8e 100644 --- a/modules/utility/binds/which-key/which-key.nix +++ b/modules/utility/binds/which-key/which-key.nix @@ -1,7 +1,18 @@ -{lib, ...}: let - inherit (lib) mkEnableOption; +{ + config, + lib, + ... +}: let + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.types) attrsOf str; 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 str; + default = {}; + }; }; }