133 lines
4.6 KiB
Nix
133 lines
4.6 KiB
Nix
{ config, lib, ... }:
|
|
|
|
with lib.nix2lua;
|
|
let
|
|
inherit (lib.mod) leader localLeader space cr cmd ctrl;
|
|
gs = config.plugin.gitsigns-nvim.varName;
|
|
hop = config.plugin.hop-nvim.varName;
|
|
in
|
|
{
|
|
imports = [
|
|
./base.nix
|
|
./recommended-plugins.nix
|
|
];
|
|
|
|
input = {
|
|
leader = lib.mkDefault ",";
|
|
localLeader = lib.mkDefault "'";
|
|
};
|
|
|
|
plugins.gitsigns.keymap.set = [
|
|
rec {
|
|
mode = "n";
|
|
lhs = "]h";
|
|
rhs = lambda0 (ifelse (var "vim.wo.diff")
|
|
(call1 "vim.cmd.normal" [ lhs (nf "bang" true) ])
|
|
(call1 "${gs}.nav_hunk" "next")
|
|
);
|
|
}
|
|
rec {
|
|
mode = "n";
|
|
lhs = "[h";
|
|
rhs = lambda0 (ifelse (var "vim.wo.diff")
|
|
(call1 "vim.cmd.normal" [ lhs (nf "bang" true) ])
|
|
(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"; }
|
|
];
|
|
|
|
plugins.navigation.hop-nvim.keymap.set = { after, before }: [
|
|
{ lhs = "${leader}hc"; rhs = "${cmd}HopChar1${cr}"; }
|
|
{
|
|
lhs = "${leader}hf";
|
|
rhs = lambda0 (call "${hop}.hint_char1" {
|
|
direction = after;
|
|
current_line_only = true;
|
|
});
|
|
}
|
|
{
|
|
lhs = "${leader}hF";
|
|
rhs = lambda0 (call "${hop}.hint_char1" {
|
|
direction = before;
|
|
current_line_only = true;
|
|
});
|
|
}
|
|
{
|
|
lhs = "${leader}hbc";
|
|
rhs = lambda0 (call "${hop}.hint_char1" { direction = after; });
|
|
}
|
|
{
|
|
lhs = "${leader}htc";
|
|
rhs = lambda0 (call "${hop}.hint_char1" { direction = before; });
|
|
}
|
|
{ lhs = "${leader}hw"; rhs = "${cmd}HopWord${cr}"; }
|
|
{
|
|
lhs = "${leader}hbw";
|
|
rhs = lambda0 (call "${hop}.hint_words" { direction = after; });
|
|
}
|
|
{
|
|
lhs = "${leader}htw";
|
|
rhs = lambda0 (call "${hop}.hint_words" { direction = before; });
|
|
}
|
|
{ lhs = "${leader}hp"; rhs = "${cmd}HopPattern${cr}"; }
|
|
{
|
|
lhs = "${leader}hbp";
|
|
rhs = lambda0 (call "${hop}.hint_patterns" { direction = after; });
|
|
}
|
|
{
|
|
lhs = "${leader}htp";
|
|
rhs = lambda0 (call "${hop}.hint_patterns" { direction = before; });
|
|
}
|
|
{
|
|
lhs = "${leader}hbv";
|
|
rhs = lambda0 (call "${hop}.hint_vertical" { direction = after; });
|
|
}
|
|
{
|
|
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"; }
|
|
{ mode = "n"; lhs = "K"; rhs = raw "vim.lsp.buf.hover"; }
|
|
{ mode = "n"; lhs = "gi"; rhs = raw "vim.lsp.buf.implementation"; }
|
|
{ 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"; }
|
|
];
|
|
|
|
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 = "[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"; }
|
|
] ++ 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}"; }
|
|
] ++ lib.optionals (config.plugins.navigation.telescope.extensions ? telescope-live-grep-args-nvim) [
|
|
{
|
|
mode = "n";
|
|
lhs = "${leader}fg";
|
|
rhs = lambda0 (call0 "telescope.extensions.live_grep_args.live_grep_args");
|
|
}
|
|
]
|
|
);
|
|
}
|