{ 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"); } ] ); }