chore: clean up types and setup logic

This commit is contained in:
mvllow 2023-05-28 17:26:42 +02:00
commit 6b7b38bbb3
No known key found for this signature in database
4 changed files with 20 additions and 42 deletions

View file

@ -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

View file

@ -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<string, Highlight>
---@type table<string, Color>
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

View file

@ -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

View file

@ -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')