feat(docs-view): custom setup

This commit is contained in:
Ching Pei Yang 2024-02-17 16:10:45 +01:00
commit 08a4c94c99
2 changed files with 45 additions and 37 deletions

View file

@ -4,7 +4,6 @@
... ...
}: let }: let
inherit (lib) mkIf nvim addDescriptionsToMappings mkSetBinding mkMerge; inherit (lib) mkIf nvim addDescriptionsToMappings mkSetBinding mkMerge;
inherit (builtins) toString;
cfg = config.vim.lsp.nvim-docs-view; cfg = config.vim.lsp.nvim-docs-view;
self = import ./nvim-docs-view.nix {inherit lib;}; self = import ./nvim-docs-view.nix {inherit lib;};
@ -18,12 +17,7 @@ in {
startPlugins = ["nvim-docs-view"]; startPlugins = ["nvim-docs-view"];
luaConfigRC.nvim-docs-view = nvim.dag.entryAnywhere '' luaConfigRC.nvim-docs-view = nvim.dag.entryAnywhere ''
require("docs-view").setup { require("docs-view").setup ${nvim.lua.expToLua cfg.setupOpts}
position = "${cfg.position}",
width = ${toString cfg.width},
height = ${toString cfg.height},
update_mode = "${cfg.updateMode}",
}
''; '';
maps.normal = mkMerge [ maps.normal = mkMerge [

View file

@ -1,41 +1,55 @@
{lib, ...}: let {lib, ...}: let
inherit (lib) mkEnableOption mkOption types mkMappingOption; inherit (lib) mkEnableOption mkOption types mkMappingOption mkRenamedOptionModule;
in { in {
options.vim.lsp.nvim-docs-view = { options.vim.lsp.nvim-docs-view = {
enable = mkEnableOption "nvim-docs-view, for displaying lsp hover documentation in a side panel."; enable = mkEnableOption "nvim-docs-view, for displaying lsp hover documentation in a side panel.";
position = mkOption { imports = let
type = types.enum ["left" "right" "top" "bottom"]; renamedSetupOption = oldPath: newPath:
default = "right"; mkRenamedOptionModule
description = '' (["vim" "lsp" "nvim-docs-view"] ++ oldPath)
Where to open the docs view panel (["vim" "lsp" "nvim-docs-view" "setupOpts"] ++ newPath);
''; in [
}; (renamedSetupOption ["position"] ["position"])
(renamedSetupOption ["width"] ["width"])
(renamedSetupOption ["height"] ["height"])
(renamedSetupOption ["updateMode"] ["update_mode"])
];
height = mkOption { setupOpts = lib.nvim.types.mkPluginSetupOption "nvim-docs-view" {
type = types.int; position = mkOption {
default = 10; type = types.enum ["left" "right" "top" "bottom"];
description = '' default = "right";
Height of the docs view panel if the position is set to either top or bottom description = ''
''; Where to open the docs view panel
}; '';
};
width = mkOption { height = mkOption {
type = types.int; type = types.int;
default = 60; default = 10;
description = '' description = ''
Width of the docs view panel if the position is set to either left or right Height of the docs view panel if the position is set to either top or bottom
''; '';
}; };
updateMode = mkOption { width = mkOption {
type = types.enum ["auto" "manual"]; type = types.int;
default = "auto"; default = 60;
description = '' description = ''
Determines the mechanism used to update the docs view panel content. Width of the docs view panel if the position is set to either left or right
- If auto, the content will update upon cursor move. '';
- If manual, the content will only update once :DocsViewUpdate is called };
'';
update_mode = mkOption {
type = types.enum ["auto" "manual"];
default = "auto";
description = ''
Determines the mechanism used to update the docs view panel content.
- If auto, the content will update upon cursor move.
- If manual, the content will only update once :DocsViewUpdate is called
'';
};
}; };
mappings = { mappings = {