mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-26 18:58:43 +02:00
plugins/zk: switch to mkNeovimPlugin
This commit is contained in:
parent
38e3849f4a
commit
1b3bda78b4
2 changed files with 119 additions and 48 deletions
|
@ -6,59 +6,128 @@
|
|||
...
|
||||
}:
|
||||
with lib;
|
||||
{
|
||||
options.plugins.zk = {
|
||||
enable = mkEnableOption "zk.nvim, a plugin to integrate with zk";
|
||||
helpers.neovim-plugin.mkNeovimPlugin config {
|
||||
name = "zk";
|
||||
originalName = "zk.nvim";
|
||||
defaultPackage = pkgs.vimPlugins.zk-nvim;
|
||||
|
||||
package = helpers.mkPluginPackageOption "zk.nvim" pkgs.vimPlugins.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"
|
||||
]
|
||||
];
|
||||
|
||||
settingsOptions = {
|
||||
picker =
|
||||
helpers.defaultNullOpts.mkEnumFirstDefault
|
||||
[
|
||||
"select"
|
||||
"fzf"
|
||||
"fzf_lua"
|
||||
"minipick"
|
||||
"telescope"
|
||||
]
|
||||
''
|
||||
it's recommended to use "telescope" or "fzf"
|
||||
It is recommended to use `"telescope"`, `"fzf"`, `"fzf_lua"`, or `"minipick"`.
|
||||
'';
|
||||
|
||||
lsp = {
|
||||
config = helpers.neovim-plugin.extraOptionsOptions // {
|
||||
cmd = helpers.defaultNullOpts.mkListOf types.str [
|
||||
"zk"
|
||||
"lsp"
|
||||
] "";
|
||||
name = helpers.defaultNullOpts.mkStr "zk" "";
|
||||
};
|
||||
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.";
|
||||
|
||||
autoAttach = {
|
||||
enabled = helpers.defaultNullOpts.mkBool true "automatically attach buffers in a zk notebook";
|
||||
filetypes = helpers.defaultNullOpts.mkListOf types.str [
|
||||
"markdown"
|
||||
] "matching the given filetypes";
|
||||
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.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
config =
|
||||
let
|
||||
cfg = config.plugins.zk;
|
||||
setupOptions = {
|
||||
inherit (cfg) picker;
|
||||
lsp = {
|
||||
inherit (cfg.lsp) config;
|
||||
auto_attach = {
|
||||
inherit (cfg.lsp.autoAttach) enabled filetypes;
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
extraPlugins = [ cfg.package ];
|
||||
extraPackages = [ pkgs.zk ];
|
||||
|
||||
extraConfigLua = ''
|
||||
require("zk").setup(${helpers.toLuaObject setupOptions})
|
||||
'';
|
||||
settingsExample = {
|
||||
picker = "telescope";
|
||||
lsp = {
|
||||
config = {
|
||||
cmd = [
|
||||
"zk"
|
||||
"lsp"
|
||||
];
|
||||
name = "zk";
|
||||
};
|
||||
auto_attach = {
|
||||
enabled = true;
|
||||
filetypes = [ "markdown" ];
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
extraOptions = {
|
||||
zkPackage = helpers.mkPackageOption {
|
||||
name = "zk";
|
||||
default = pkgs.zk;
|
||||
};
|
||||
};
|
||||
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";
|
||||
}
|
||||
);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -6,19 +6,21 @@
|
|||
defaults = {
|
||||
plugins.zk = {
|
||||
enable = true;
|
||||
picker = "select";
|
||||
lsp = {
|
||||
config = {
|
||||
cmd = [
|
||||
"zk"
|
||||
"lsp"
|
||||
];
|
||||
name = "zk";
|
||||
};
|
||||
|
||||
autoAttach = {
|
||||
enabled = true;
|
||||
filetypes = [ "markdown" ];
|
||||
settings = {
|
||||
picker = "select";
|
||||
lsp = {
|
||||
config = {
|
||||
cmd = [
|
||||
"zk"
|
||||
"lsp"
|
||||
];
|
||||
name = "zk";
|
||||
};
|
||||
auto_attach = {
|
||||
enabled = true;
|
||||
filetypes = [ "markdown" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue