From cf906180aedb08d490b60676a50cd9a29e11643c Mon Sep 17 00:00:00 2001 From: Ching Pei Yang Date: Tue, 26 Nov 2024 15:35:59 +0100 Subject: [PATCH] lazy: add assertions for common pitfalls --- modules/wrapper/lazy/config.nix | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/modules/wrapper/lazy/config.nix b/modules/wrapper/lazy/config.nix index 9113d568..bf37e34a 100644 --- a/modules/wrapper/lazy/config.nix +++ b/modules/wrapper/lazy/config.nix @@ -3,7 +3,7 @@ config, ... }: let - inherit (builtins) toJSON typeOf head length filter concatLists concatStringsSep; + inherit (builtins) toJSON typeOf head length filter concatLists concatStringsSep tryEval; inherit (lib.attrsets) mapAttrsToList; inherit (lib.modules) mkIf mkMerge; inherit (lib.generators) mkLuaInline; @@ -21,10 +21,36 @@ else keySpec.action; }; - toLuaLznSpec = name: spec: + toLuaLznSpec = name: spec: let + packageName = + if typeOf spec.package == "string" + then spec.package + else if (spec.package ? pname && (tryEval spec.package.pname).success) + then spec.package.pname + else spec.package.name; + in (removeAttrs spec ["package" "setupModule" "setupOpts" "keys"]) // { - "@1" = name; + "@1" = + if spec.package != null && packageName != name && spec.load == null + then + abort '' + vim.lazy.plugins.${name} does not match the package name ${packageName}. + + Please either: + - rename it to vim.lazy.plugins.${packageName}, or + - if you intend to use a custom loader, specify a + vim.lazy.plugins.${name}.load function. + '' + else if spec.package == null && spec.load == null + then + abort '' + vim.lazy.plugins.${name} has null package but no load function given. + + Please either specify a package, or (if you know what you're doing) provide a + custom load function. + '' + else name; beforeAll = if spec.beforeAll != null then