-
-
Notifications
You must be signed in to change notification settings - Fork 295
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a352bb8
commit 28dd237
Showing
2 changed files
with
218 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
{ config, lib, ... }: | ||
let | ||
inherit (lib) types; | ||
inherit (lib.nixvim) | ||
defaultNullOpts | ||
literalLua | ||
mkNullOrOption' | ||
nestedLiteralLua | ||
; | ||
|
||
libraryType = types.submodule { | ||
freeformType = with types; attrsOf anything; | ||
options = { | ||
files = mkNullOrOption' { | ||
type = with types; listOf str; | ||
example = [ "xmake.lua" ]; | ||
description = "A list of files that triggers the library to be loaded when required."; | ||
}; | ||
mods = mkNullOrOption' { | ||
type = with types; listOf str; | ||
example = [ "wezterm" ]; | ||
description = "A list of modules that triggers the library to be loaded when required."; | ||
}; | ||
path = lib.mkOption { | ||
type = types.str; | ||
example = "~/projects/my-awesome-lib"; | ||
description = "The path to the library."; | ||
}; | ||
words = mkNullOrOption' { | ||
type = with types; listOf str; | ||
example = [ | ||
"wezterm" | ||
"LazyVim" | ||
]; | ||
description = "A list of words that triggers the library to be loaded."; | ||
}; | ||
}; | ||
}; | ||
in | ||
lib.nixvim.plugins.mkNeovimPlugin { | ||
name = "lazydev"; | ||
packPathName = "lazydev.nvim"; | ||
package = "lazydev-nvim"; | ||
|
||
maintainers = [ lib.maintainers.HeitorAugustoLN ]; | ||
|
||
description = '' | ||
### lazydev.nvim as a blink.cmp source | ||
```nix | ||
{ | ||
plugins = { | ||
lazydev.enable = true; | ||
blink-cmp.settings = { | ||
sources.providers = { | ||
lazydev = { | ||
name = "LazyDev"; | ||
module = "lazydev.integrations.blink"; | ||
# make lazydev completions top priority (see `:h blink.cmp`) | ||
score_offset = 100; | ||
}; | ||
}; | ||
}; | ||
}; | ||
} | ||
``` | ||
''; | ||
|
||
settingsOptions = { | ||
enabled = | ||
defaultNullOpts.mkBool | ||
(literalLua '' | ||
function(root_dir) | ||
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled | ||
end | ||
'') | ||
'' | ||
Whether lazydev.nvim is enabled. | ||
''; | ||
|
||
integrations = { | ||
cmp = defaultNullOpts.mkBool true '' | ||
Whether lazydev.nvim should integrate with nvim-cmp. | ||
Adds a completion source for: | ||
- `require "modname"` | ||
- `---@module "modname"` | ||
''; | ||
|
||
coq = defaultNullOpts.mkBool false '' | ||
Whether lazydev.nvim should integrate with coq.nvim. | ||
Adds a completion source for: | ||
- `require "modname"` | ||
- `---@module "modname"` | ||
''; | ||
|
||
lspconfig = defaultNullOpts.mkBool true '' | ||
Whether lazydev.nvim should integrate with nvim-lspconfig. | ||
Fixes lspconfig's workspace management for LuaLS | ||
Only create a new workspace if the buffer is not part | ||
of an existing workspace or one of its libraries. | ||
''; | ||
}; | ||
|
||
library = defaultNullOpts.mkNullableWithRaw (with types; listOf (either str libraryType)) [ ] '' | ||
A list of libraries for lazydev.nvim. | ||
''; | ||
|
||
runtime = defaultNullOpts.mkStr (literalLua "vim.env.VIMRUNTIME") '' | ||
The runtime path of the current Neovim instance. | ||
''; | ||
}; | ||
|
||
settingsExample = { | ||
enabled = nestedLiteralLua '' | ||
function(root_dir) | ||
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled | ||
end | ||
''; | ||
library = [ | ||
"~/projects/my-awesome-lib" | ||
"lazy.nvim" | ||
"LazyVim" | ||
{ | ||
path = "LazyVim"; | ||
words = [ "LazyVim" ]; | ||
} | ||
]; | ||
runtime = nestedLiteralLua "vim.env.VIMRUNTIME"; | ||
}; | ||
|
||
extraConfig = cfg: { | ||
warnings = | ||
lib.optionals | ||
( | ||
builtins.isBool cfg.settings.integrations.cmp | ||
&& (config.plugins.cmp.enable -> cfg.settings.integrations.cmp) | ||
) | ||
[ "Nixvim(plugins.lazydev): you have enabled nvim-cmp integration but plugins.cmp is not enabled." ] | ||
++ | ||
lib.optionals | ||
( | ||
builtins.isBool cfg.settings.integrations.lspconfig | ||
&& (config.plugins.lsp.enable -> cfg.settings.integrations.lspconfig) | ||
) | ||
[ | ||
"Nixvim(plugins.lazydev): you have enabled lspconfig integration but plugins.lsp is not enabled." | ||
] | ||
++ | ||
lib.optionals | ||
( | ||
builtins.isBool cfg.settings.integrations.coq | ||
&& (config.plugins.coq-nvim.enable -> cfg.settings.integrations.coq) | ||
) | ||
[ | ||
"Nixvim(plugins.lazydev): you have enabled coq integration but plugins.coq-nvim is not enabled." | ||
]; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
{ | ||
empty = { | ||
plugins.lazydev.enable = true; | ||
}; | ||
|
||
defaults = { | ||
plugins = { | ||
cmp.enable = true; | ||
|
||
lazydev = { | ||
enable = true; | ||
|
||
settings = { | ||
enabled.__raw = '' | ||
function(root_dir) | ||
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled | ||
end | ||
''; | ||
integrations = { | ||
lspconfig = true; | ||
cmp = true; | ||
coq = false; | ||
}; | ||
library.__raw = "{}"; | ||
runtime.__raw = "vim.env.VIMRUNTIME"; | ||
}; | ||
}; | ||
|
||
lsp.enable = true; | ||
}; | ||
}; | ||
|
||
example = { | ||
plugins.lazydev = { | ||
enable = true; | ||
|
||
settings = { | ||
enabled.__raw = '' | ||
function(root_dir) | ||
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled | ||
end | ||
''; | ||
library = [ | ||
"~/projects/my-awesome-lib" | ||
"lazy.nvim" | ||
"LazyVim" | ||
{ | ||
path = "LazyVim"; | ||
words = [ "LazyVim" ]; | ||
} | ||
]; | ||
runtime.__raw = "vim.env.VIMRUNTIME"; | ||
}; | ||
}; | ||
}; | ||
} |