{ 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 "(git-conflict-ours)") (mkSetBinding gcMappings.theirs "(git-conflict-theirs)") (mkSetBinding gcMappings.both "(git-conflict-both)") (mkSetBinding gcMappings.none "(git-conflict-none)") (mkSetBinding gcMappings.prevConflict "(git-conflict-prev-conflict)") (mkSetBinding gcMappings.nextConflict "(git-conflict-next-conflict)") ]; }; pluginRC.git-conflict = entryAnywhere '' require('git-conflict').setup(${toLuaObject ({default_mappings = false;} // cfg.setupOpts)}) ''; }; } ]); }