{ config, lib, ... }: let inherit (lib.options) mkOption mkEnableOption; inherit (lib.nvim.types) borderType; cfg = config.vim.ui.borders; in { options.vim.ui.borders = { enable = mkEnableOption "visible borders for most windows"; globalStyle = mkOption { 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 = ["╔" "═" "╗" "║" "╝" "═" "╚" "║"]; }; plugins = let mkPluginStyleOption = name: { enable = mkEnableOption "borders for the ${name} plugin" // {default = cfg.enable;}; style = mkOption { 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"; fastaction = mkPluginStyleOption "fastaction"; }; }; }