lib: add useful utils for mods
This commit is contained in:
parent
4a7c1b3d97
commit
fdeca99cb8
4 changed files with 78 additions and 76 deletions
70
lib/mod.nix
70
lib/mod.nix
|
@ -2,7 +2,7 @@
|
|||
|
||||
let
|
||||
inherit (builtins) listToAttrs;
|
||||
inherit (lib) nameValuePair toLower;
|
||||
inherit (lib) nameValuePair;
|
||||
|
||||
wrap = val: "<${val}>";
|
||||
|
||||
|
@ -12,40 +12,40 @@ let
|
|||
meta = key: wrap "M-${key}"; # alt-key or meta-key *META* *ALT* *<M-*
|
||||
super = key: wrap "D-${key}"; # command-key or "super" key *<D-*
|
||||
|
||||
keys = listToAttrs (map (v: nameValuePair v (wrap (toLower v))) (
|
||||
keys = listToAttrs (map (v: nameValuePair v (wrap v)) (
|
||||
[
|
||||
"leader"
|
||||
"localLeader"
|
||||
"cmd"
|
||||
"plug"
|
||||
"mouseMove"
|
||||
"Leader"
|
||||
"LocalLeader"
|
||||
"Cmd"
|
||||
"Plug"
|
||||
"MouseMove"
|
||||
|
||||
"nul"
|
||||
"bs"
|
||||
"tab"
|
||||
"nl"
|
||||
"cr"
|
||||
"esc"
|
||||
"space"
|
||||
"lt"
|
||||
"bslash"
|
||||
"bar"
|
||||
"del"
|
||||
"csi"
|
||||
"eol"
|
||||
"ignore"
|
||||
"nop"
|
||||
"up"
|
||||
"down"
|
||||
"left"
|
||||
"right"
|
||||
"help"
|
||||
"undo"
|
||||
"insert"
|
||||
"home"
|
||||
"end"
|
||||
"pageUp"
|
||||
"pageDown"
|
||||
"Nul"
|
||||
"Bs"
|
||||
"Tab"
|
||||
"Nl"
|
||||
"Cr"
|
||||
"Esc"
|
||||
"Space"
|
||||
"Lt"
|
||||
"Bslash"
|
||||
"Bar"
|
||||
"Del"
|
||||
"Csi"
|
||||
"Eol"
|
||||
"Ignore"
|
||||
"Nop"
|
||||
"Up"
|
||||
"Down"
|
||||
"Left"
|
||||
"Right"
|
||||
"Help"
|
||||
"Undo"
|
||||
"Insert"
|
||||
"Home"
|
||||
"End"
|
||||
"PageUp"
|
||||
"PageDown"
|
||||
"kUp"
|
||||
"kDown"
|
||||
"kLeft"
|
||||
|
@ -74,4 +74,8 @@ in
|
|||
return = keys.cr;
|
||||
enter = keys.cr;
|
||||
backslash = keys.bslash;
|
||||
|
||||
cmd = expr: keys.Cmd + expr + keys.Cr;
|
||||
leader = expr: keys.Leader + expr;
|
||||
localLeader = expr: keys.LocalLeader + expr;
|
||||
}
|
||||
|
|
|
@ -5,19 +5,19 @@ let
|
|||
|
||||
cfg = config.input;
|
||||
|
||||
disableKeymaps = mode: lhss: lib.flip map lhss (lhs: { inherit mode lhs; rhs = mod.nop; });
|
||||
disableKeymaps = mode: lhss: lib.flip map lhss (lhs: { inherit mode lhs; rhs = mod.Nop; });
|
||||
in
|
||||
{
|
||||
options.input = with lib; {
|
||||
leader = mkOption {
|
||||
type = types.str;
|
||||
default = ''\'';
|
||||
apply = x: assert (builtins.stringLength x == 1 || abort "${mod.leader} `${x}` is longer than one character is not allowed"); x;
|
||||
apply = x: assert (builtins.stringLength x == 1 || abort "${mod.Leader} `${x}` is longer than one character is not allowed"); x;
|
||||
};
|
||||
localLeader = mkOption {
|
||||
type = types.str;
|
||||
default = ''\'';
|
||||
apply = x: assert (builtins.stringLength x == 1 || abort "${mod.localLeader} `${x}` is longer than one character is not allowed"); x;
|
||||
apply = x: assert (builtins.stringLength x == 1 || abort "${mod.LocalLeader} `${x}` is longer than one character is not allowed"); x;
|
||||
};
|
||||
|
||||
exMode.enable = mkEnableOption "Ex mode";
|
||||
|
@ -52,9 +52,9 @@ in
|
|||
lib.optionals (!cfg.exMode.enable) (disableKeymaps "n" [ "Q" "gQ" ])
|
||||
# Disable arrow keys
|
||||
++ lib.optionals cfg.arrowKeys.disable
|
||||
(disableKeymaps cfg.arrowKeys.mode [ mod.up mod.down mod.left mod.right ])
|
||||
(disableKeymaps cfg.arrowKeys.mode [ mod.Up mod.Down mod.Left mod.Right ])
|
||||
# Disable PageUp / PageDown
|
||||
++ lib.optionals cfg.pageButtons.disable
|
||||
(disableKeymaps cfg.pageButtons.mode [ mod.pageUp mod.pageDown ]);
|
||||
(disableKeymaps cfg.pageButtons.mode [ mod.PageUp mod.PageDown ]);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (lib.mod) leader cmd cr ctrl;
|
||||
inherit (lib.mod) leader cmd ctrl;
|
||||
in
|
||||
{
|
||||
vim.opt = {
|
||||
|
@ -90,14 +90,14 @@ in
|
|||
++ lib.optionals config.plugins.navigation.nvim-tree.enable [
|
||||
{
|
||||
mode = "n";
|
||||
lhs = "${leader}nt";
|
||||
rhs = "${cmd}NvimTreeToggle${cr}";
|
||||
lhs = leader "nt";
|
||||
rhs = cmd "NvimTreeToggle";
|
||||
desc = "Open/Close file tree";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
lhs = "${leader}nf";
|
||||
rhs = "${cmd}NvimTreeFindFile${cr}";
|
||||
lhs = leader "nf";
|
||||
rhs = cmd "NvimTreeFindFile";
|
||||
desc = "Open file tree and find current file";
|
||||
}
|
||||
];
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
with lib.nix2lua;
|
||||
let
|
||||
inherit (lib.mod) leader localLeader space cr cmd ctrl;
|
||||
inherit (lib.mod) Space cmd ctrl leader localLeader;
|
||||
gs = config.plugin.gitsigns-nvim.varName;
|
||||
hop = config.plugin.hop-nvim.varName;
|
||||
in
|
||||
|
@ -34,72 +34,70 @@ in
|
|||
(call1 "${gs}.nav_hunk" "prev")
|
||||
);
|
||||
}
|
||||
{ mode = "n"; lhs = "${localLeader}gs"; rhs = raw "${gs}.stage_hunk"; }
|
||||
{ mode = "n"; lhs = "${localLeader}gr"; rhs = raw "${gs}.reset_hunk"; }
|
||||
{ mode = "n"; lhs = "${localLeader}gu"; rhs = raw "${gs}.undo_stage_hunk"; }
|
||||
{ mode = "n"; lhs = "${localLeader}gp"; rhs = raw "${gs}.preview_hunk"; }
|
||||
{ mode = "n"; lhs = "${localLeader}gb"; rhs = lambda0 (call "${gs}.blame_line" { full = true; }); }
|
||||
{ mode = "n"; lhs = "${localLeader}gd"; rhs = raw "${gs}.diffthis"; }
|
||||
{ mode = "n"; lhs = "${localLeader}gD"; rhs = lambda0 (call "${gs}.diffthis" "~"); }
|
||||
{ mode = "n"; lhs = "${localLeader}gtb"; rhs = raw "${gs}.toggle_current_line_blame"; }
|
||||
{ mode = "n"; lhs = "${localLeader}gtd"; rhs = raw "${gs}.toggle_deleted"; }
|
||||
{ mode = "n"; lhs = localLeader "gs"; rhs = raw "${gs}.stage_hunk"; }
|
||||
{ mode = "n"; lhs = localLeader "gr"; rhs = raw "${gs}.reset_hunk"; }
|
||||
{ mode = "n"; lhs = localLeader "gu"; rhs = raw "${gs}.undo_stage_hunk"; }
|
||||
{ mode = "n"; lhs = localLeader "gp"; rhs = raw "${gs}.preview_hunk"; }
|
||||
{ mode = "n"; lhs = localLeader "gb"; rhs = lambda0 (call "${gs}.blame_line" { full = true; }); }
|
||||
{ mode = "n"; lhs = localLeader "gd"; rhs = raw "${gs}.diffthis"; }
|
||||
{ mode = "n"; lhs = localLeader "gD"; rhs = lambda0 (call "${gs}.diffthis" "~"); }
|
||||
{ mode = "n"; lhs = localLeader "gtb"; rhs = raw "${gs}.toggle_current_line_blame"; }
|
||||
{ mode = "n"; lhs = localLeader "gtd"; rhs = raw "${gs}.toggle_deleted"; }
|
||||
];
|
||||
|
||||
plugins.navigation.hop-nvim.keymap.set = { after, before }: [
|
||||
{ lhs = "${leader}hc"; rhs = "${cmd}HopChar1${cr}"; }
|
||||
{ lhs = leader "hc"; rhs = cmd "HopChar1"; }
|
||||
{
|
||||
lhs = "${leader}hf";
|
||||
lhs = leader "hf";
|
||||
rhs = lambda0 (call "${hop}.hint_char1" {
|
||||
direction = after;
|
||||
current_line_only = true;
|
||||
});
|
||||
}
|
||||
{
|
||||
lhs = "${leader}hF";
|
||||
lhs = leader "hF";
|
||||
rhs = lambda0 (call "${hop}.hint_char1" {
|
||||
direction = before;
|
||||
current_line_only = true;
|
||||
});
|
||||
}
|
||||
{
|
||||
lhs = "${leader}hbc";
|
||||
lhs = leader "hbc";
|
||||
rhs = lambda0 (call "${hop}.hint_char1" { direction = after; });
|
||||
}
|
||||
{
|
||||
lhs = "${leader}htc";
|
||||
lhs = leader "htc";
|
||||
rhs = lambda0 (call "${hop}.hint_char1" { direction = before; });
|
||||
}
|
||||
{ lhs = "${leader}hw"; rhs = "${cmd}HopWord${cr}"; }
|
||||
{ lhs = leader "hw"; rhs = cmd "HopWord"; }
|
||||
{
|
||||
lhs = "${leader}hbw";
|
||||
lhs = leader "hbw";
|
||||
rhs = lambda0 (call "${hop}.hint_words" { direction = after; });
|
||||
}
|
||||
{
|
||||
lhs = "${leader}htw";
|
||||
lhs = leader "htw";
|
||||
rhs = lambda0 (call "${hop}.hint_words" { direction = before; });
|
||||
}
|
||||
{ lhs = "${leader}hp"; rhs = "${cmd}HopPattern${cr}"; }
|
||||
{ lhs = leader "hp"; rhs = cmd "HopPattern"; }
|
||||
{
|
||||
lhs = "${leader}hbp";
|
||||
lhs = leader "hbp";
|
||||
rhs = lambda0 (call "${hop}.hint_patterns" { direction = after; });
|
||||
}
|
||||
{
|
||||
lhs = "${leader}htp";
|
||||
lhs = leader "htp";
|
||||
rhs = lambda0 (call "${hop}.hint_patterns" { direction = before; });
|
||||
}
|
||||
{
|
||||
lhs = "${leader}hbv";
|
||||
lhs = leader "hbv";
|
||||
rhs = lambda0 (call "${hop}.hint_vertical" { direction = after; });
|
||||
}
|
||||
{
|
||||
lhs = "${leader}htv";
|
||||
lhs = leader "htv";
|
||||
rhs = lambda0 (call "${hop}.hint_vertical" { direction = before; });
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
plugins.language-server.lspconfig.keymap.set = [
|
||||
{ mode = "n"; lhs = "gD"; rhs = raw "vim.lsp.buf.declaration"; }
|
||||
{ mode = "n"; lhs = "gd"; rhs = raw "vim.lsp.buf.definition"; }
|
||||
|
@ -108,24 +106,24 @@ in
|
|||
{ mode = "n"; lhs = "gr"; rhs = raw "vim.lsp.buf.references"; }
|
||||
{ mode = "n"; lhs = "gy"; rhs = raw "vim.lsp.buf.type_definition"; }
|
||||
{ mode = "n"; lhs = ctrl "k"; rhs = raw "vim.lsp.buf.signature_help"; }
|
||||
{ mode = "n"; lhs = "${localLeader}n"; rhs = raw "vim.lsp.buf.rename"; }
|
||||
{ mode = [ "n" "v" ]; lhs = "${localLeader}a"; rhs = raw "vim.lsp.buf.code_action"; }
|
||||
{ mode = "n"; lhs = localLeader "n"; rhs = raw "vim.lsp.buf.rename"; }
|
||||
{ mode = [ "n" "v" ]; lhs = localLeader "a"; rhs = raw "vim.lsp.buf.code_action"; }
|
||||
];
|
||||
|
||||
vim.keymap.set = lib.optionals config.plugins.language-server.lspconfig.enable [
|
||||
{ mode = "n"; lhs = "${space}e"; rhs = raw "vim.diagnostic.open_float"; }
|
||||
{ mode = "n"; lhs = "${Space}e"; rhs = raw "vim.diagnostic.open_float"; }
|
||||
{ mode = "n"; lhs = "[d"; rhs = raw "vim.diagnostic.goto_prev"; }
|
||||
{ mode = "n"; lhs = "]d"; rhs = raw "vim.diagnostic.goto_next"; }
|
||||
{ mode = "n"; lhs = "${space}q"; rhs = raw "vim.diagnostic.setloclist"; }
|
||||
{ mode = "n"; lhs = "${Space}q"; rhs = raw "vim.diagnostic.setloclist"; }
|
||||
] ++ lib.optionals config.plugins.navigation.telescope.enable (
|
||||
[
|
||||
{ mode = "n"; lhs = "${leader}ff"; rhs = "${cmd}Telescope find_files${cr}"; }
|
||||
{ mode = "n"; lhs = "${leader}fb"; rhs = "${cmd}Telescope buffers${cr}"; }
|
||||
{ mode = "n"; lhs = "${leader}fh"; rhs = "${cmd}Telescope help_tags${cr}"; }
|
||||
{ mode = "n"; lhs = leader "ff"; rhs = cmd "Telescope find_files"; }
|
||||
{ mode = "n"; lhs = leader "fb"; rhs = cmd "Telescope buffers"; }
|
||||
{ mode = "n"; lhs = leader "fh"; rhs = cmd "Telescope help_tags"; }
|
||||
] ++ lib.optionals (config.plugins.navigation.telescope.extensions ? telescope-live-grep-args-nvim) [
|
||||
{
|
||||
mode = "n";
|
||||
lhs = "${leader}fg";
|
||||
lhs = leader "fg";
|
||||
rhs = lambda0 (call0 "telescope.extensions.live_grep_args.live_grep_args");
|
||||
}
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue