treewide: standardize border type (#341)

* ui: allow custom listOf str border type

* lib: extract shared borderType

* remove TODO

* allow ["|" "HighlightGroup"] for border char

* docs: update rl notes

---------

Co-authored-by: raf <raf@notashelf.dev>
This commit is contained in:
Ching Pei Yang 2024-09-13 18:34:21 +02:00 committed by GitHub
commit b499151527
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 29 additions and 23 deletions

View file

@ -4,31 +4,34 @@
...
}: let
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.lists) optionals;
inherit (lib.types) enum;
inherit (lib.nvim.types) borderType;
cfg = config.vim.ui.borders;
defaultStyles = ["none" "single" "double" "rounded"];
in {
options.vim.ui.borders = {
enable = mkEnableOption "visible borders for most windows";
globalStyle = mkOption {
type = enum defaultStyles;
type = borderType;
default = "rounded";
description = ''
The global border style to use.
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. You can specify
a different highlight group for each character by passing a
[char, "YourHighlightGroup"] instead
'';
example = ["" "" "" "" "" "" "" ""];
};
# TODO: make per-plugin borders configurable
plugins = let
mkPluginStyleOption = name: {
enable = mkEnableOption "borders for the ${name} plugin" // {default = cfg.enable;};
style = mkOption {
type = enum (defaultStyles ++ optionals (name != "which-key") ["shadow"]);
type = borderType;
default = cfg.globalStyle;
description = "The border style to use for the ${name} plugin";
};

View file

@ -4,9 +4,9 @@
...
}: let
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.types) nullOr listOf enum bool str int;
inherit (lib.types) nullOr listOf enum bool str int either;
inherit (lib.modules) mkRenamedOptionModule;
inherit (lib.nvim.types) mkPluginSetupOption;
inherit (lib.nvim.types) mkPluginSetupOption borderType;
mkSimpleIconOption = default:
mkOption {
inherit default;
@ -212,8 +212,7 @@ in {
# position = {}
border = mkOption {
# TODO: let this type accept a custom string
type = enum ["single" "rounded" "double" "solid" "none"];
type = borderType;
default = config.vim.ui.borders.globalStyle;
description = "border style to use";
};
@ -236,8 +235,7 @@ in {
*/
border = mkOption {
# TODO: let this type accept a custom string
type = nullOr (enum ["single" "rounded" "double" "solid" "none"]);
type = borderType;
default = config.vim.ui.borders.globalStyle;
description = "border style to use for the left section of Navbuddy UI";
};
@ -254,8 +252,7 @@ in {
*/
border = mkOption {
# TODO: let this type accept a custom string
type = nullOr (enum ["single" "rounded" "double" "solid" "none"]);
type = borderType;
default = config.vim.ui.borders.globalStyle;
description = "border style to use for the middle section of Navbuddy UI";
};
@ -265,8 +262,7 @@ in {
# there is no size option for the right section, it fills the remaining space
right = {
border = mkOption {
# TODO: let this type accept a custom string
type = nullOr (enum ["single" "rounded" "double" "solid" "none"]);
type = borderType;
default = config.vim.ui.borders.globalStyle;
description = "border style to use for the right section of Navbuddy UI";
};