nix-community.nixvim/plugins/utils/zk.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

134 lines
2.8 KiB
Nix
Raw Normal View History

2023-04-17 23:13:12 +02:00
{
lib,
helpers,
config,
pkgs,
2023-04-17 23:13:12 +02:00
...
}:
with lib;
2024-06-28 09:28:58 +02:00
helpers.neovim-plugin.mkNeovimPlugin config {
name = "zk";
originalName = "zk.nvim";
defaultPackage = pkgs.vimPlugins.zk-nvim;
maintainers = [ maintainers.GaetanLepage ];
2023-04-17 23:13:12 +02:00
2024-06-28 09:28:58 +02:00
# TODO: introduced 2024-06-28. Remove after 24.11 release.
optionsRenamedToSettings = [
"picker"
[
"lsp"
"config"
]
[
"lsp"
"autoAttach"
"enabled"
]
[
"lsp"
"autoAttach"
"filetypes"
]
];
2023-04-17 23:13:12 +02:00
2024-06-28 09:28:58 +02:00
settingsOptions = {
2023-04-17 23:13:12 +02:00
picker =
helpers.defaultNullOpts.mkEnumFirstDefault
[
"select"
"fzf"
2024-06-28 09:28:58 +02:00
"fzf_lua"
"minipick"
2023-04-17 23:13:12 +02:00
"telescope"
]
''
2024-06-28 09:28:58 +02:00
It is recommended to use `"telescope"`, `"fzf"`, `"fzf_lua"`, or `"minipick"`.
2023-04-17 23:13:12 +02:00
'';
lsp = {
2024-06-28 09:28:58 +02:00
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"
2024-06-28 09:28:58 +02:00
];
name = "zk";
2023-04-17 23:13:12 +02:00
};
2024-06-28 09:28:58 +02:00
auto_attach = {
enabled = true;
filetypes = [ "markdown" ];
2023-04-17 23:13:12 +02:00
};
};
2024-06-28 09:28:58 +02:00
2023-04-17 23:13:12 +02:00
};
2024-06-28 09:28:58 +02:00
extraOptions = {
zkPackage = helpers.mkPackageOption {
name = "zk";
default = pkgs.zk;
2023-04-17 23:13:12 +02:00
};
2024-06-28 09:28:58 +02:00
};
extraConfig = cfg: {
extraPackages = [ cfg.zkPackage ];
warnings = flatten (
mapAttrsToList
(
picker: pluginName:
optional ((cfg.settings.picker == picker) && !config.plugins.${pluginName}.enable) ''
Nixvim (plugins.zk): You have set `plugins.zk.settings.picker = "${picker}"` but `plugins.${pluginName}` is not enabled in your config.
''
)
{
fzf_lua = "fzf-lua";
telescope = "telescope";
}
);
};
2023-04-17 23:13:12 +02:00
}