mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-02-23 11:58:23 +00:00

* plugins/git: add git-conflict-nvim; modularize * plugins/git: build git-conflict-nvim ourselves
40 lines
1.3 KiB
Nix
40 lines
1.3 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib.modules) mkIf mkMerge;
|
|
inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding;
|
|
inherit (lib.nvim.dag) entryAnywhere;
|
|
inherit (lib.nvim.lua) toLuaObject;
|
|
|
|
cfg = config.vim.git.git-conflict;
|
|
|
|
self = import ./git-conflict.nix {inherit lib config;};
|
|
gcMappingDefinitions = self.options.vim.git.git-conflict.mappings;
|
|
|
|
gcMappings = addDescriptionsToMappings cfg.mappings gcMappingDefinitions;
|
|
in {
|
|
config = mkIf cfg.enable (mkMerge [
|
|
{
|
|
vim = {
|
|
startPlugins = ["git-conflict-nvim"];
|
|
|
|
maps = {
|
|
normal = mkMerge [
|
|
(mkSetBinding gcMappings.ours "<Plug>(git-conflict-ours)")
|
|
(mkSetBinding gcMappings.theirs "<Plug>(git-conflict-theirs)")
|
|
(mkSetBinding gcMappings.both "<Plug>(git-conflict-both)")
|
|
(mkSetBinding gcMappings.none "<Plug>(git-conflict-none)")
|
|
(mkSetBinding gcMappings.prevConflict "<Plug>(git-conflict-prev-conflict)")
|
|
(mkSetBinding gcMappings.nextConflict "<Plug>(git-conflict-next-conflict)")
|
|
];
|
|
};
|
|
|
|
pluginRC.git-conflict = entryAnywhere ''
|
|
require('git-conflict').setup(${toLuaObject ({default_mappings = false;} // cfg.setupOpts)})
|
|
'';
|
|
};
|
|
}
|
|
]);
|
|
}
|