mirror of
https://github.com/nix-community/nixvim.git
synced 2025-11-09 12:06:05 +01:00
Instead of explicitly listing all renames and removals, we can check if the plugin's lazyload option is visible and in the top-level option set. This rules out cases where `plugins.foo` is itself a rename/removal option, and cases where `plugins.foo.lazyload` is not visible.
59 lines
1.5 KiB
Nix
59 lines
1.5 KiB
Nix
{
|
|
config,
|
|
options,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
implementations = [
|
|
"lz-n"
|
|
"lazy"
|
|
];
|
|
in
|
|
{
|
|
config = {
|
|
assertions =
|
|
let
|
|
enabled = builtins.filter (x: config.plugins.${x}.enable) implementations;
|
|
count = builtins.length enabled;
|
|
in
|
|
[
|
|
{
|
|
assertion = count < 2;
|
|
message = ''
|
|
You have multiple lazy-loaders enabled:
|
|
${lib.concatImapStringsSep "\n" (i: x: "${toString i}. plugins.${x}") enabled}
|
|
Please ensure only one is enabled at a time.
|
|
'';
|
|
}
|
|
];
|
|
warnings =
|
|
let
|
|
isVisible =
|
|
opt:
|
|
let
|
|
visible = opt.visible or true;
|
|
in
|
|
if lib.isBool visible then visible else visible == "shallow";
|
|
|
|
pluginsWithLazyLoad = builtins.filter (
|
|
x:
|
|
lib.isOption (options.plugins.${x}.lazyload or null)
|
|
&& isVisible options.plugins.${x}.lazyload
|
|
&& config.plugins.${x}.lazyLoad.enable
|
|
) (builtins.attrNames config.plugins);
|
|
count = builtins.length pluginsWithLazyLoad;
|
|
in
|
|
lib.nixvim.mkWarnings "lazy loading" {
|
|
when = count > 0 && !config.plugins.lz-n.enable;
|
|
|
|
message = ''
|
|
You have enabled lazy loading support for the following plugins but have not enabled a lazy loading provider.
|
|
${lib.concatImapStringsSep "\n" (i: x: "${toString i}. plugins.${x}") pluginsWithLazyLoad}
|
|
|
|
Currently supported lazy providers:
|
|
- lz-n
|
|
'';
|
|
};
|
|
};
|
|
}
|