mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-20 16:15:43 +02:00
133 lines
2.9 KiB
Nix
133 lines
2.9 KiB
Nix
{
|
|
lib,
|
|
helpers,
|
|
config,
|
|
...
|
|
}:
|
|
with lib;
|
|
lib.nixvim.plugins.mkNeovimPlugin {
|
|
name = "zk";
|
|
packPathName = "zk.nvim";
|
|
package = "zk-nvim";
|
|
|
|
maintainers = [ maintainers.GaetanLepage ];
|
|
|
|
# TODO: introduced 2024-06-28. Remove after 24.11 release.
|
|
optionsRenamedToSettings = [
|
|
"picker"
|
|
[
|
|
"lsp"
|
|
"config"
|
|
]
|
|
[
|
|
"lsp"
|
|
"autoAttach"
|
|
"enabled"
|
|
]
|
|
[
|
|
"lsp"
|
|
"autoAttach"
|
|
"filetypes"
|
|
]
|
|
];
|
|
imports = [
|
|
# TODO: added 2025-04-07, remove after 25.05
|
|
(lib.nixvim.mkRemovedPackageOptionModule {
|
|
plugin = "zk";
|
|
packageName = "zk";
|
|
})
|
|
];
|
|
|
|
settingsOptions = {
|
|
picker =
|
|
helpers.defaultNullOpts.mkEnumFirstDefault
|
|
[
|
|
"select"
|
|
"fzf"
|
|
"fzf_lua"
|
|
"minipick"
|
|
"telescope"
|
|
]
|
|
''
|
|
It is recommended to use `"telescope"`, `"fzf"`, `"fzf_lua"`, or `"minipick"`.
|
|
'';
|
|
|
|
lsp = {
|
|
config =
|
|
helpers.defaultNullOpts.mkNullable
|
|
(types.submodule {
|
|
freeformType = with types; attrsOf anything;
|
|
options = {
|
|
cmd = helpers.defaultNullOpts.mkListOf types.str [
|
|
"zk"
|
|
"lsp"
|
|
] "Command to start the language server.";
|
|
|
|
name = helpers.defaultNullOpts.mkStr "zk" ''
|
|
The name for this server.
|
|
'';
|
|
|
|
on_attach = helpers.mkNullOrLuaFn ''
|
|
Command to run when the client is attached.
|
|
'';
|
|
};
|
|
})
|
|
{
|
|
cmd = [
|
|
"zk"
|
|
"lsp"
|
|
];
|
|
name = "zk";
|
|
}
|
|
''
|
|
LSP configuration. See `:h vim.lsp.start_client()`.
|
|
'';
|
|
|
|
auto_attach = {
|
|
enabled = helpers.defaultNullOpts.mkBool true ''
|
|
Automatically attach buffers in a zk notebook.
|
|
'';
|
|
|
|
filetypes = helpers.defaultNullOpts.mkListOf types.str [ "markdown" ] ''
|
|
Filetypes for which zk should automatically attach.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
settingsExample = {
|
|
picker = "telescope";
|
|
lsp = {
|
|
config = {
|
|
cmd = [
|
|
"zk"
|
|
"lsp"
|
|
];
|
|
name = "zk";
|
|
};
|
|
auto_attach = {
|
|
enabled = true;
|
|
filetypes = [ "markdown" ];
|
|
};
|
|
};
|
|
|
|
};
|
|
|
|
extraConfig = cfg: {
|
|
dependencies.zk.enable = lib.mkDefault true;
|
|
|
|
warnings = lib.nixvim.mkWarnings "plugins.zk" (
|
|
mapAttrsToList
|
|
(picker: pluginName: {
|
|
when = (cfg.settings.picker == picker) && !config.plugins.${pluginName}.enable;
|
|
message = ''
|
|
You have set `plugins.zk.settings.picker = "${picker}"` but `plugins.${pluginName}` is not enabled in your config.
|
|
'';
|
|
})
|
|
{
|
|
fzf_lua = "fzf-lua";
|
|
telescope = "telescope";
|
|
}
|
|
);
|
|
};
|
|
}
|