From 6b7b38bbb3dac648dbf81f2728ce1101f476f920 Mon Sep 17 00:00:00 2001 From: mvllow Date: Sun, 28 May 2023 17:26:42 +0200 Subject: [PATCH] chore: clean up types and setup logic --- lua/rose-pine.lua | 4 +++- lua/rose-pine/config.lua | 46 ++++++++++++--------------------------- lua/rose-pine/palette.lua | 10 ++------- lua/rose-pine/theme.lua | 2 +- 4 files changed, 20 insertions(+), 42 deletions(-) diff --git a/lua/rose-pine.lua b/lua/rose-pine.lua index b843fde..b3cf3ea 100644 --- a/lua/rose-pine.lua +++ b/lua/rose-pine.lua @@ -15,6 +15,8 @@ function M.colorscheme(variant) require('rose-pine.theme')._load(config.options) end -M.setup = config.setup +function M.setup(options) + config.extend(options) +end return M diff --git a/lua/rose-pine/config.lua b/lua/rose-pine/config.lua index cd9bef2..58674d7 100644 --- a/lua/rose-pine/config.lua +++ b/lua/rose-pine/config.lua @@ -1,25 +1,18 @@ +---@alias Variant "main" | "moon" | "dawn" +---@alias Color { fg: string, bg: string, sp: string, bold: boolean, italic: boolean, undercurl: boolean, underline: boolean, underdouble: boolean, underdotted: boolean, underdashed: boolean, strikethrough: boolean } + local M = {} ----@class Highlight ----@field fg string ----@field bg string ----@field sp string ----@field bold boolean ----@field italic boolean ----@field undercurl boolean ----@field underline boolean ----@field underdouble boolean ----@field underdotted boolean ----@field underdashed boolean ----@field strikethrough boolean - ----@alias Variant 'main' | 'moon' | 'dawn' - ----@class Config -local defaults = { - ---@type 'auto' | Variant +---@class Options +M.options = { + ---Set the desired variant: "auto" will follow the vim background, + ---defaulting to "main" for dark and "dawn" for light. To change the dark + ---variant, use `options.dark_variant = "moon"`. + ---@type "auto" | Variant variant = 'auto', + ---Set the desired dark variant: applies when `options.variant` is set to + ---"auto" to match `vim.o.background`. ---@type Variant dark_variant = 'main', @@ -63,24 +56,13 @@ local defaults = { }, }, - ---@type table + ---@type table highlight_groups = {}, } ----@type Config -M.options = {} - ----@param options Config|nil -function M.setup(options) - M.options = vim.tbl_deep_extend('force', {}, defaults, options or {}) -end - ----@param options Config|nil +---@param options Options|nil function M.extend(options) - M.options = - vim.tbl_deep_extend('force', {}, M.options or defaults, options or {}) + M.options = vim.tbl_deep_extend('force', M.options, options or {}) end -M.setup() - return M diff --git a/lua/rose-pine/palette.lua b/lua/rose-pine/palette.lua index 42eb9bc..66d6438 100644 --- a/lua/rose-pine/palette.lua +++ b/lua/rose-pine/palette.lua @@ -66,14 +66,8 @@ local variants = { }, } -if options.variant == 'main' then - return variants.main -end -if options.variant == 'moon' then - return variants.moon -end -if options.variant == 'dawn' then - return variants.dawn +if variants[options.variant] ~= nil then + return variants[options.variant] end return vim.o.background == 'light' and variants.dawn diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 4f7af42..edb25a1 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -1,6 +1,6 @@ local M = {} ----@param options Config +---@param options Options function M._load(options) local h = require('rose-pine.util').highlight local p = require('rose-pine.palette')