treewide: migrate to vim.keymaps

This commit is contained in:
Ching Pei Yang 2026-06-12 14:44:46 +02:00 committed by Ching Pei Yang
commit 55a96f83b4
13 changed files with 218 additions and 162 deletions

View file

@ -7,66 +7,107 @@
inherit (builtins) toJSON;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.generators) mkLuaInline;
inherit (lib.nvim.binds) addDescriptionsToMappings mkSetExprBinding mkSetLuaBinding pushDownDefault;
inherit (lib.nvim.binds) mkKeymap pushDownDefault;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.lua) toLuaObject;
cfg = config.vim.git.gitsigns;
gsMappingDefinitions = options.vim.git.gitsigns.mappings;
gsMappings = addDescriptionsToMappings cfg.mappings gsMappingDefinitions;
inherit (options.vim.git.gitsigns) mappings;
in {
config = mkIf cfg.enable (mkMerge [
{
vim = {
startPlugins = ["gitsigns-nvim"];
maps = {
normal = mkMerge [
(mkSetExprBinding gsMappings.nextHunk ''
keymaps = [
(mkKeymap "n" cfg.mappings.nextHunk ''
function()
if vim.wo.diff then return ${toJSON gsMappings.nextHunk.value} end
if vim.wo.diff then return ${toJSON cfg.mappings.nextHunk} end
vim.schedule(function() package.loaded.gitsigns.next_hunk() end)
return '<Ignore>'
end
'')
'' {
desc = mappings.nextHunk.description;
lua = true;
expr = true;
})
(mkSetExprBinding gsMappings.previousHunk ''
(mkKeymap "n" cfg.mappings.previousHunk ''
function()
if vim.wo.diff then return ${toJSON gsMappings.previousHunk.value} end
if vim.wo.diff then return ${toJSON cfg.mappings.previousHunk} end
vim.schedule(function() package.loaded.gitsigns.prev_hunk() end)
return '<Ignore>'
end
'')
'' {
desc = mappings.previousHunk.description;
lua = true;
expr = true;
})
(mkSetLuaBinding gsMappings.stageHunk "package.loaded.gitsigns.stage_hunk")
(mkSetLuaBinding gsMappings.resetHunk "package.loaded.gitsigns.reset_hunk")
(mkSetLuaBinding gsMappings.undoStageHunk "package.loaded.gitsigns.undo_stage_hunk")
(mkKeymap "n" cfg.mappings.stageHunk "package.loaded.gitsigns.stage_hunk" {
desc = mappings.stageHunk.description;
lua = true;
})
(mkKeymap "n" cfg.mappings.resetHunk "package.loaded.gitsigns.reset_hunk" {
desc = mappings.resetHunk.description;
lua = true;
})
(mkKeymap "n" cfg.mappings.undoStageHunk "package.loaded.gitsigns.undo_stage_hunk" {
desc = mappings.undoStageHunk.description;
lua = true;
})
(mkSetLuaBinding gsMappings.stageBuffer "package.loaded.gitsigns.stage_buffer")
(mkSetLuaBinding gsMappings.resetBuffer "package.loaded.gitsigns.reset_buffer")
(mkKeymap "n" cfg.mappings.stageBuffer "package.loaded.gitsigns.stage_buffer" {
desc = mappings.stageBuffer.description;
lua = true;
})
(mkKeymap "n" cfg.mappings.resetBuffer "package.loaded.gitsigns.reset_buffer" {
desc = mappings.resetBuffer.description;
lua = true;
})
(mkSetLuaBinding gsMappings.previewHunk "package.loaded.gitsigns.preview_hunk")
(mkKeymap "n" cfg.mappings.previewHunk "package.loaded.gitsigns.preview_hunk" {
desc = mappings.previewHunk.description;
lua = true;
})
(mkSetLuaBinding gsMappings.blameLine "function() package.loaded.gitsigns.blame_line{full=true} end")
(mkSetLuaBinding gsMappings.toggleBlame "package.loaded.gitsigns.toggle_current_line_blame")
(mkKeymap "n" cfg.mappings.blameLine "function() package.loaded.gitsigns.blame_line{full=true} end" {
desc = mappings.blameLine.description;
lua = true;
})
(mkKeymap "n" cfg.mappings.toggleBlame "package.loaded.gitsigns.toggle_current_line_blame" {
desc = mappings.toggleBlame.description;
lua = true;
})
(mkSetLuaBinding gsMappings.diffThis "package.loaded.gitsigns.diffthis")
(mkSetLuaBinding gsMappings.diffProject "function() package.loaded.gitsigns.diffthis('~') end")
(mkKeymap "n" cfg.mappings.diffThis "package.loaded.gitsigns.diffthis" {
desc = mappings.diffThis.description;
lua = true;
})
(mkKeymap "n" cfg.mappings.diffProject "function() package.loaded.gitsigns.diffthis('~') end" {
desc = mappings.diffProject.description;
lua = true;
})
(mkSetLuaBinding gsMappings.toggleDeleted "package.loaded.gitsigns.toggle_deleted")
];
(mkKeymap "n" cfg.mappings.toggleDeleted "package.loaded.gitsigns.toggle_deleted" {
desc = mappings.toggleDeleted.description;
lua = true;
})
visual = mkMerge [
(mkSetLuaBinding gsMappings.stageHunk "function() package.loaded.gitsigns.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end")
(mkSetLuaBinding gsMappings.resetHunk "function() package.loaded.gitsigns.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end")
];
};
(mkKeymap "v" cfg.mappings.stageHunk "function() package.loaded.gitsigns.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end" {
desc = mappings.stageHunk.description;
lua = true;
})
(mkKeymap "v" cfg.mappings.resetHunk "function() package.loaded.gitsigns.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end" {
desc = mappings.resetHunk.description;
lua = true;
})
];
binds.whichKey.register = pushDownDefault {
"<leader>h" = "+Gitsigns";