@@ -333,5 +333,113 @@ rec {
333
333
else
334
334
example ;
335
335
} ;
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
+ } ;
336
444
}
337
445
// removed
0 commit comments