plugins/telescope: allow key mappings to be attrs

This commit is contained in:
Gaetan Lepage 2023-07-17 13:18:08 +02:00 committed by Gaétan Lepage
parent 71c0b4cb59
commit 6152f77a63
2 changed files with 42 additions and 7 deletions

View file

@ -27,12 +27,15 @@ in {
package = helpers.mkPackageOption "telescope.nvim" pkgs.vimPlugins.telescope-nvim;
keymaps = mkOption {
type = types.attrsOf types.str;
type = with types; attrsOf (either str attrs);
description = "Keymaps for telescope.";
default = {};
example = {
"<leader>fg" = "live_grep";
"<C-p>" = "git_files";
"<C-p>" = {
action = "git_files";
desc = "Telescope Git Files";
};
};
};
@ -82,11 +85,22 @@ in {
maps.normal =
mapAttrs
(key: action: {
silent = cfg.keymapsSilent;
action = "require('telescope.builtin').${action}";
lua = true;
})
(key: action: let
actionStr =
if isString action
then action
else action.action;
actionProps =
if isString action
then {}
else filterAttrs (n: v: n != "action") action;
in
{
silent = cfg.keymapsSilent;
action = "require('telescope.builtin').${actionStr}";
lua = true;
}
// actionProps)
cfg.keymaps;
extraConfigLua = let

View file

@ -0,0 +1,21 @@
{
empty = {
plugins.telescope.enable = true;
};
example = {
plugins.telescope = {
enable = true;
keymaps = {
"<leader>fg" = "live_grep";
"<C-p>" = {
action = "git_files";
desc = "Telescope Git Files";
};
};
keymapsSilent = true;
highlightTheme = "gruvbox";
};
};
}