nvf/modules/plugins/ui/borders/borders.nix

48 lines
1.5 KiB
Nix
Raw Normal View History

{
config,
lib,
...
}: let
inherit (lib.options) mkOption mkEnableOption;
2024-07-16 11:56:48 +00:00
inherit (lib.nvim.types) borderType;
cfg = config.vim.ui.borders;
2023-07-23 15:26:38 +00:00
in {
options.vim.ui.borders = {
enable = mkEnableOption "visible borders for most windows";
globalStyle = mkOption {
2024-07-16 11:56:48 +00:00
type = borderType;
default = "rounded";
description = ''
The global border style to use.
2024-07-16 11:56:48 +00:00
If a list is given, it should have a length of eight or any divisor of
eight. The array will specify the eight chars building up the border in
a clockwise fashion starting with the top-left corner.
'';
2024-07-16 11:56:48 +00:00
example = ["" "" "" "" "" "" "" ""];
};
2023-07-23 15:26:38 +00:00
plugins = let
mkPluginStyleOption = name: {
enable = mkEnableOption "borders for the ${name} plugin" // {default = cfg.enable;};
style = mkOption {
2024-07-16 11:56:48 +00:00
type = borderType;
default = cfg.globalStyle;
description = "The border style to use for the ${name} plugin";
};
};
in {
# despite not having it listed in example configuration, which-key does support the rounded type
# additionally, it supports a "shadow" type that is similar to none but is of higher contrast
which-key = mkPluginStyleOption "which-key";
lspsaga = mkPluginStyleOption "lspsaga";
nvim-cmp = mkPluginStyleOption "nvim-cmp";
lsp-signature = mkPluginStyleOption "lsp-signature";
code-action-menu = mkPluginStyleOption "code-actions-menu";
};
2023-07-23 15:26:38 +00:00
};
}