Skip to content

Commit 6ed719d

Browse files
psfloydkhaneliman
authored andcommitted
lib/options: added mkLazyLoadOption
1 parent 301868d commit 6ed719d

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed

lib/default.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ lib.fix (
6666
defaultNullOpts
6767
mkCompositeOption
6868
mkCompositeOption'
69+
mkLazyLoadOption
6970
mkNullOrLua
7071
mkNullOrLua'
7172
mkNullOrLuaFn

lib/options.nix

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,5 +333,113 @@ rec {
333333
else
334334
example;
335335
};
336+
337+
mkLazyLoadOption =
338+
{
339+
originalName,
340+
lazyLoadDefaults ? { },
341+
}:
342+
lib.mkOption {
343+
description = ''
344+
Lazy-load settings for ${originalName}.
345+
'';
346+
type =
347+
let
348+
triggerType =
349+
with types;
350+
oneOf [
351+
rawLua
352+
str
353+
(listOf str)
354+
];
355+
in
356+
types.submodule {
357+
options = with defaultNullOpts; {
358+
359+
enable = lib.mkEnableOption ''
360+
lazy-loading for ${originalName}
361+
'';
362+
363+
# Spec loading:
364+
enabled = mkStrLuaFnOr types.bool (lazyLoadDefaults.enabledInSpec or null) ''
365+
When false, or if the function returns false, then ${originalName} will not be included in the spec.
366+
367+
Equivalence: lz.n => enabled; lazy.nvim => enabled
368+
'';
369+
370+
priority = mkNullable types.number (lazyLoadDefaults.priority or null) ''
371+
Only useful for start plugins (not lazy-loaded) to force loading certain plugins first.
372+
373+
Equivalence: lz.n => priority; lazy.nvim => priority
374+
'';
375+
376+
# Spec setup
377+
# Actions
378+
beforeAll = mkLuaFn (lazyLoadDefaults.beforeAll or null) ''
379+
Always executed before any plugins are loaded.
380+
381+
Equivalence: lz.n => beforeAll; lazy.nvim => init
382+
'';
383+
384+
before = mkLuaFn (lazyLoadDefaults.before or null) ''
385+
Executed before ${originalName} is loaded.
386+
387+
Equivalence: lz.n => before; lazy.nvim => None
388+
'';
389+
390+
after = mkLuaFn (lazyLoadDefaults.after or null) ''
391+
Executed after ${originalName} is loaded.
392+
393+
Equivalence: lz.n => after; lazy.nvim => config
394+
'';
395+
396+
# Triggers
397+
event = mkNullable triggerType (lazyLoadDefaults.event or null) ''
398+
Lazy-load on event. Events can be specified as `BufEnter` or with a pattern like `BufEnter *.lua`
399+
400+
Equivalence: lz.n => event; lazy.nvim => event
401+
'';
402+
403+
cmd = mkNullable triggerType (lazyLoadDefaults.cmd or null) ''
404+
Lazy-load on command.
405+
406+
Equivalence: lz.n => cmd; lazy.nvim => cmd
407+
'';
408+
409+
ft = mkNullable triggerType (lazyLoadDefaults.ft or null) ''
410+
Lazy-load on filetype.
411+
412+
Equivalence: lz.n => ft; lazy.nvim => ft
413+
'';
414+
415+
keys =
416+
mkNullable (types.listOf lib.nixvim.keymaps.mapOptionSubmodule) (lazyLoadDefaults.keys or null)
417+
''
418+
Lazy-load on key mapping. Use the same format as `config.keymaps`.
419+
420+
Equivalence: lz.n => keys; lazy.nvim => keys
421+
'';
422+
423+
colorscheme = mkNullable triggerType (lazyLoadDefaults.colorscheme or null) ''
424+
Lazy-load on colorscheme.
425+
426+
Equivalence: lz.n => colorscheme; lazy.nvim => None
427+
'';
428+
429+
extraSettings = mkSettingsOption {
430+
description = ''
431+
Extra settings to pass to the lazy loader backend.
432+
'';
433+
example = {
434+
dependencies = {
435+
__unkeyed-1 = "nvim-lua/plenary.nvim";
436+
lazy = true;
437+
};
438+
};
439+
};
440+
};
441+
};
442+
default = lazyLoadDefaults;
443+
};
336444
}
337445
// removed

0 commit comments

Comments
 (0)