mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 16:57:55 +00:00
69 lines
1.6 KiB
Nix
69 lines
1.6 KiB
Nix
{ config, lib, helpers, ... }:
|
|
|
|
let
|
|
cfg = config.keyunmaps;
|
|
|
|
keyunmapOption = { config, lib, ... }: {
|
|
options = {
|
|
key = lib.mkOption {
|
|
type = lib.types.str;
|
|
description = "The key to unmap.";
|
|
example = "<leader>w";
|
|
};
|
|
|
|
mode = lib.mkOption {
|
|
type = with lib.types;
|
|
either helpers.keymaps.modeEnum (listOf helpers.keymaps.modeEnum);
|
|
default = "";
|
|
example = [ "n" "i" "v" ];
|
|
description = ''
|
|
One or more several modes as their shortnames. For more details, see
|
|
`:h map-modes`.
|
|
'';
|
|
};
|
|
|
|
options = {
|
|
buffer = lib.mkOption {
|
|
type = with lib.types; either ints.unsigned bool;
|
|
default = true;
|
|
example = 4;
|
|
description = ''
|
|
Remove a mapping from the given buffer. When `0` or `true`, use the
|
|
current buffer.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
};
|
|
in
|
|
{
|
|
options.keyunmaps = lib.mkOption {
|
|
type = with lib.types; listOf (submodule keyunmapOption);
|
|
default = [ ];
|
|
example = [
|
|
{
|
|
modes = [ "n" "i" ];
|
|
key = "<leader>w";
|
|
options.buffer = true;
|
|
}
|
|
];
|
|
description = ''
|
|
A list of keymaps to be removed. Take note, this will occur after
|
|
setting the keymap.
|
|
'';
|
|
};
|
|
|
|
config = {
|
|
extraConfigLua = lib.optionalString (cfg != [ ]) (lib.mkAfter ''
|
|
-- Set up unmappings {{{
|
|
do
|
|
local __nixvim_unbinds = ${helpers.toLuaObject cfg}
|
|
for i, unmap in ipairs(__nixvim_unbinds) do
|
|
vim.keymap.del(unmap.mode, unmap.key, unmap.options)
|
|
end
|
|
end
|
|
-- }}}
|
|
'');
|
|
};
|
|
}
|