lib: move all binding related functions to lib/binds

This commit is contained in:
raf 2024-04-07 18:31:06 +03:00
parent 7c730a78e5
commit a12ba5689a
No known key found for this signature in database
GPG key ID: 02D1DD3FA08B6B29
10 changed files with 51 additions and 112 deletions

View file

@ -67,6 +67,7 @@
mkLuaBinding binding.value action binding.description; mkLuaBinding binding.value action binding.description;
pushDownDefault = attr: mapAttrs (_name: value: mkDefault value) attr; pushDownDefault = attr: mapAttrs (_name: value: mkDefault value) attr;
# pushDownDefault = attr: self.mapAttrs (name: value: self.mkDefault value) attr;
}; };
in in
binds binds

View file

@ -1,75 +1,15 @@
# From home-manager: https://github.com/nix-community/home-manager/blob/master/modules/lib/stdlib-extended.nix # Cconvenience function that returns the given Nixpkgs standard library
# Just a convenience function that returns the given Nixpkgs standard # extended with our functions using `lib.extend`.
# library extended with the HM library.
nixpkgsLib: let nixpkgsLib: let
mkNvimLib = import ./.; mkNvimLib = import ./.;
in in
nixpkgsLib.extend (self: super: rec { # WARNING: New functions should not be added here, but to files
# imported by `./default.nix` under their own categories. If your
# function does not fit to any of the existing categories, create
# a new file and import it in `./default.nix.`
nixpkgsLib.extend (self: super: {
nvim = mkNvimLib {lib = self;}; nvim = mkNvimLib {lib = self;};
mkLuaBinding = key: action: desc:
self.mkIf (key != null) {
"${key}" = {
inherit action desc;
lua = true;
silent = true;
};
};
mkExprBinding = key: action: desc:
self.mkIf (key != null) {
"${key}" = {
inherit action desc;
lua = true;
silent = true;
expr = true;
};
};
mkBinding = key: action: desc:
self.mkIf (key != null) {
"${key}" = {
inherit action desc;
silent = true;
};
};
mkMappingOption = description: default:
self.mkOption {
type = self.types.nullOr self.types.str;
inherit default description;
};
# Utility function that takes two attrsets:
# { someKey = "some_value" } and
# { someKey = { description = "Some Description"; }; }
# and merges them into
# { someKey = { value = "some_value"; description = "Some Description"; }; }
addDescriptionsToMappings = actualMappings: mappingDefinitions:
self.attrsets.mapAttrs (name: value: let
isNested = self.isAttrs value;
returnedValue =
if isNested
then addDescriptionsToMappings actualMappings."${name}" mappingDefinitions."${name}"
else {
value = value;
description = mappingDefinitions."${name}".description;
};
in
returnedValue)
actualMappings;
mkSetBinding = binding: action:
mkBinding binding.value action binding.description;
mkSetExprBinding = binding: action:
mkExprBinding binding.value action binding.description;
mkSetLuaBinding = binding: action:
mkLuaBinding binding.value action binding.description;
pushDownDefault = attr: self.mapAttrs (name: value: self.mkDefault value) attr;
# For forward compatibility. # For forward compatibility.
literalExpression = super.literalExpression or super.literalExample; literalExpression = super.literalExpression or super.literalExample;
}) })

View file

@ -236,6 +236,11 @@ in {
else abort ("Dependency cycle in ${name}: " + toJSON sortedDag); else abort ("Dependency cycle in ${name}: " + toJSON sortedDag);
in in
result; result;
mkSection = r: ''
-- SECTION: ${r.name}
${r.data}
'';
in { in {
vim = { vim = {
startPlugins = map (x: x.package) (attrValues cfg.extraPlugins); startPlugins = map (x: x.package) (attrValues cfg.extraPlugins);
@ -243,10 +248,6 @@ in {
globalsScript = entryAnywhere (concatStringsSep "\n" globalsScript); globalsScript = entryAnywhere (concatStringsSep "\n" globalsScript);
luaScript = let luaScript = let
mkSection = r: ''
-- SECTION: ${r.name}
${r.data}
'';
mapResult = r: (wrapLuaConfig (concatStringsSep "\n" (map mkSection r))); mapResult = r: (wrapLuaConfig (concatStringsSep "\n" (map mkSection r)));
luaConfig = resolveDag { luaConfig = resolveDag {
name = "lua config script"; name = "lua config script";
@ -257,10 +258,6 @@ in {
entryAfter ["globalsScript"] luaConfig; entryAfter ["globalsScript"] luaConfig;
extraPluginConfigs = let extraPluginConfigs = let
mkSection = r: ''
-- SECTION: ${r.name}
${r.data}
'';
mapResult = r: (wrapLuaConfig (concatStringsSep "\n" (map mkSection r))); mapResult = r: (wrapLuaConfig (concatStringsSep "\n" (map mkSection r)));
extraPluginsDag = mapAttrs (_: { extraPluginsDag = mapAttrs (_: {
after, after,

View file

@ -9,6 +9,7 @@ inputs: {
inherit (pkgs) wrapNeovimUnstable vimPlugins; inherit (pkgs) wrapNeovimUnstable vimPlugins;
inherit (pkgs.vimUtils) buildVimPlugin; inherit (pkgs.vimUtils) buildVimPlugin;
inherit (pkgs.neovimUtils) makeNeovimConfig; inherit (pkgs.neovimUtils) makeNeovimConfig;
inherit (lib.attrsets) recursiveUpdate;
extendedLib = import ../lib/stdlib-extended.nix lib; extendedLib = import ../lib/stdlib-extended.nix lib;
@ -19,7 +20,7 @@ inputs: {
module = extendedLib.evalModules { module = extendedLib.evalModules {
modules = [configuration] ++ nvimModules; modules = [configuration] ++ nvimModules;
specialArgs = {modulesPath = toString ./.;} // extraSpecialArgs; specialArgs = recursiveUpdate {modulesPath = toString ./.;} extraSpecialArgs;
}; };
vimOptions = module.config.vim; vimOptions = module.config.vim;

View file

@ -7,7 +7,8 @@
cfg = config.vim; cfg = config.vim;
in { in {
vim.maps.normal = vim.maps = {
normal =
mkIf cfg.disableArrows { mkIf cfg.disableArrows {
"<up>" = { "<up>" = {
action = "<nop>"; action = "<nop>";
@ -34,7 +35,7 @@ in {
}; };
}; };
vim.maps.insert = mkIf cfg.disableArrows { insert = mkIf cfg.disableArrows {
"<up>" = { "<up>" = {
action = "<nop>"; action = "<nop>";
noremap = false; noremap = false;
@ -52,4 +53,5 @@ in {
noremap = false; noremap = false;
}; };
}; };
};
} }

View file

@ -9,8 +9,7 @@
inherit (lib.nvim.binds) mkBinding; inherit (lib.nvim.binds) mkBinding;
inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.lua) toLuaObject;
# TODO: move this to its own module inherit (lib.nvim.binds) pushDownDefault;
inherit (lib) pushDownDefault;
cfg = config.vim.filetree.nvimTree; cfg = config.vim.filetree.nvimTree;
self = import ./nvimtree.nix {inherit pkgs lib;}; self = import ./nvimtree.nix {inherit pkgs lib;};

View file

@ -5,10 +5,8 @@
}: let }: let
inherit (builtins) toJSON; inherit (builtins) toJSON;
inherit (lib.modules) mkIf mkMerge; inherit (lib.modules) mkIf mkMerge;
inherit (lib.nvim.binds) addDescriptionsToMappings mkSetExprBinding mkSetLuaBinding; inherit (lib.nvim.binds) addDescriptionsToMappings mkSetExprBinding mkSetLuaBinding pushDownDefault;
inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.dag) entryAnywhere;
# TODO: move this to its own module
inherit (lib) pushDownDefault;
cfg = config.vim.git; cfg = config.vim.git;

View file

@ -4,7 +4,8 @@
lib, lib,
... ...
}: let }: let
inherit (lib) mkMerge mkBinding mkIf; inherit (lib) mkMerge mkIf;
inherit (lib.nvim.binds) mkBinding;
inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.lua) toLuaObject;
cfg = config.vim.notes.todo-comments; cfg = config.vim.notes.todo-comments;

View file

@ -3,7 +3,8 @@
lib, lib,
... ...
}: let }: let
inherit (lib) mkEnableOption mkOption types mkMappingOption mkRenamedOptionModule; inherit (lib) mkEnableOption mkOption types mkRenamedOptionModule;
inherit (lib.nvim.binds) mkMappingOption;
in { in {
imports = let imports = let
renamedSetupOption = oldPath: newPath: renamedSetupOption = oldPath: newPath:

View file

@ -7,8 +7,7 @@
inherit (lib.modules) mkIf mkMerge; inherit (lib.modules) mkIf mkMerge;
inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding; inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding;
inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.dag) entryAnywhere;
# TODO: move this to its own module inherit (lib.nvim.binds) pushDownDefault;
inherit (lib) pushDownDefault;
inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.lua) toLuaObject;
cfg = config.vim.telescope; cfg = config.vim.telescope;