modules/input: add options to configure leaders

This commit is contained in:
Dmitriy Pleshevskiy 2024-04-27 02:44:52 +03:00
parent c4cc7d5a80
commit 85f2524196
Signed by: pleshevskiy
GPG key ID: 17041163DA10A9A2

View file

@ -7,6 +7,17 @@ let
in in
{ {
options.input = with lib; with types; { options.input = with lib; with types; {
leader = mkOption {
type = str;
default = ''\'';
apply = x: assert (builtins.stringLength x == 1 || abort "<Leader> `${x}` is longer than one character is not allowed"); x;
};
localLeader = mkOption {
type = str;
default = ''\'';
apply = x: assert (builtins.stringLength x == 1 || abort "<LocalLeader> `${x}` is longer than one character is not allowed"); x;
};
exMode.enable = (mkEnableOption "Ex mode") // { default = true; }; exMode.enable = (mkEnableOption "Ex mode") // { default = true; };
arrowKeys = { arrowKeys = {
disableInMode = mkOption { disableInMode = mkOption {
@ -22,7 +33,10 @@ in
}; };
}; };
config.vim.keymap.set = config = {
vim.g.mapleader = cfg.leader;
vim.keymap.set =
# Disable the annoying and useless ex-mode # Disable the annoying and useless ex-mode
lib.optionals (!cfg.exMode.enable) (disableKeymaps "n" [ "Q" "gQ" ]) lib.optionals (!cfg.exMode.enable) (disableKeymaps "n" [ "Q" "gQ" ])
# Disable arrow keys # Disable arrow keys
@ -31,4 +45,5 @@ in
# Disable PageUp / PageDown # Disable PageUp / PageDown
++ lib.optionals (cfg.pageButtons.disableInMode != [ ]) ++ lib.optionals (cfg.pageButtons.disableInMode != [ ])
(disableKeymaps cfg.pageButtons.disableInMode [ "<PageUp>" "<PageDown>" ]); (disableKeymaps cfg.pageButtons.disableInMode [ "<PageUp>" "<PageDown>" ]);
};
} }