mirror of
https://github.com/rose-pine/neovim.git
synced 2025-10-15 12:38:53 +02:00
refactor: move config into separate file
This commit is contained in:
parent
93c760b393
commit
544b809b45
4 changed files with 625 additions and 600 deletions
|
|
@ -1,70 +1,12 @@
|
||||||
local util = require('rose-pine.util')
|
local config = require('rose-pine.config')
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
local config = {
|
---@param options Config|nil
|
||||||
bold_vert_split = false,
|
function M.colorscheme(options)
|
||||||
dark_variant = 'main',
|
if options then
|
||||||
dim_nc_background = false,
|
config.extend(options)
|
||||||
disable_background = false,
|
|
||||||
disable_float_background = false,
|
|
||||||
disable_italics = false,
|
|
||||||
|
|
||||||
groups = {
|
|
||||||
background = 'base',
|
|
||||||
panel = 'surface',
|
|
||||||
border = 'highlight_med',
|
|
||||||
comment = 'muted',
|
|
||||||
link = 'iris',
|
|
||||||
punctuation = 'muted',
|
|
||||||
|
|
||||||
error = 'love',
|
|
||||||
hint = 'iris',
|
|
||||||
info = 'foam',
|
|
||||||
warn = 'gold',
|
|
||||||
|
|
||||||
git_add = 'foam',
|
|
||||||
git_change = 'rose',
|
|
||||||
git_delete = 'love',
|
|
||||||
git_dirty = 'rose',
|
|
||||||
git_ignore = 'muted',
|
|
||||||
git_merge = 'iris',
|
|
||||||
git_rename = 'pine',
|
|
||||||
git_stage = 'iris',
|
|
||||||
git_text = 'rose',
|
|
||||||
|
|
||||||
headings = {
|
|
||||||
h1 = 'iris',
|
|
||||||
h2 = 'foam',
|
|
||||||
h3 = 'rose',
|
|
||||||
h4 = 'gold',
|
|
||||||
h5 = 'pine',
|
|
||||||
h6 = 'foam',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
highlight_groups = {},
|
|
||||||
}
|
|
||||||
|
|
||||||
function M.setup(opts)
|
|
||||||
opts = opts or {}
|
|
||||||
vim.g.rose_pine_variant = opts.dark_variant or 'main'
|
|
||||||
|
|
||||||
if opts.groups and type(opts.groups.headings) == 'string' then
|
|
||||||
opts.groups.headings = {
|
|
||||||
h1 = opts.groups.headings,
|
|
||||||
h2 = opts.groups.headings,
|
|
||||||
h3 = opts.groups.headings,
|
|
||||||
h4 = opts.groups.headings,
|
|
||||||
h5 = opts.groups.headings,
|
|
||||||
h6 = opts.groups.headings,
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
config.user_variant = opts.dark_variant or nil
|
|
||||||
config = vim.tbl_deep_extend('force', config, opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.colorscheme()
|
|
||||||
if vim.g.colors_name then
|
if vim.g.colors_name then
|
||||||
vim.cmd('hi clear')
|
vim.cmd('hi clear')
|
||||||
end
|
end
|
||||||
|
|
@ -72,20 +14,9 @@ function M.colorscheme()
|
||||||
vim.opt.termguicolors = true
|
vim.opt.termguicolors = true
|
||||||
vim.g.colors_name = 'rose-pine'
|
vim.g.colors_name = 'rose-pine'
|
||||||
|
|
||||||
local theme = require('rose-pine.theme').get(config)
|
require('rose-pine.theme')._load(config.options)
|
||||||
|
|
||||||
-- Set theme highlights
|
|
||||||
for group, color in pairs(theme) do
|
|
||||||
-- Skip highlight group if user overrides
|
|
||||||
if config.highlight_groups[group] == nil then
|
|
||||||
util.highlight(group, color)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Set user highlights
|
|
||||||
for group, color in pairs(config.highlight_groups) do
|
|
||||||
util.highlight(group, color)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
M.setup = config.setup
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
||||||
98
lua/rose-pine/config.lua
Normal file
98
lua/rose-pine/config.lua
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
---@class Groups
|
||||||
|
---@field background string
|
||||||
|
---@field panel string
|
||||||
|
---@field border string
|
||||||
|
---@field comment string
|
||||||
|
---@field link string
|
||||||
|
---@field punctuation string
|
||||||
|
---@field error string
|
||||||
|
---@field hint string
|
||||||
|
---@field info string
|
||||||
|
---@field warn string
|
||||||
|
---@field git_add string
|
||||||
|
---@field git_change string
|
||||||
|
---@field git_delete string
|
||||||
|
---@field git_dirty string
|
||||||
|
---@field git_ignore string
|
||||||
|
---@field git_merge string
|
||||||
|
---@field git_rename string
|
||||||
|
---@field git_stage string
|
||||||
|
---@field git_text string
|
||||||
|
---@field headings Headings|string
|
||||||
|
|
||||||
|
---@class Headings
|
||||||
|
---@field h1 string
|
||||||
|
---@field h2 string
|
||||||
|
---@field h3 string
|
||||||
|
---@field h4 string
|
||||||
|
---@field h5 string
|
||||||
|
---@field h6 string
|
||||||
|
|
||||||
|
---@class Config
|
||||||
|
---@field dark_variant 'main'|'moon'
|
||||||
|
---@field bold_vert_split boolean
|
||||||
|
---@field dim_nc_background boolean
|
||||||
|
---@field disable_background boolean
|
||||||
|
---@field disable_float_background boolean
|
||||||
|
---@field disable_italics boolean
|
||||||
|
---@field groups Groups
|
||||||
|
---@field highlight_groups table<string, any>
|
||||||
|
local defaults = {
|
||||||
|
dark_variant = 'main',
|
||||||
|
bold_vert_split = false,
|
||||||
|
dim_nc_background = false,
|
||||||
|
disable_background = false,
|
||||||
|
disable_float_background = false,
|
||||||
|
disable_italics = false,
|
||||||
|
highlight_groups = {},
|
||||||
|
|
||||||
|
groups = {
|
||||||
|
background = 'base',
|
||||||
|
panel = 'surface',
|
||||||
|
border = 'highlight_med',
|
||||||
|
comment = 'muted',
|
||||||
|
link = 'iris',
|
||||||
|
punctuation = 'muted',
|
||||||
|
error = 'love',
|
||||||
|
hint = 'iris',
|
||||||
|
info = 'foam',
|
||||||
|
warn = 'gold',
|
||||||
|
git_add = 'foam',
|
||||||
|
git_change = 'rose',
|
||||||
|
git_delete = 'love',
|
||||||
|
git_dirty = 'rose',
|
||||||
|
git_ignore = 'muted',
|
||||||
|
git_merge = 'iris',
|
||||||
|
git_rename = 'pine',
|
||||||
|
git_stage = 'iris',
|
||||||
|
git_text = 'rose',
|
||||||
|
headings = {
|
||||||
|
h1 = 'iris',
|
||||||
|
h2 = 'foam',
|
||||||
|
h3 = 'rose',
|
||||||
|
h4 = 'gold',
|
||||||
|
h5 = 'pine',
|
||||||
|
h6 = 'foam',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
---@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
|
||||||
|
function M.extend(options)
|
||||||
|
M.options =
|
||||||
|
vim.tbl_deep_extend('force', {}, M.options or defaults, options or {})
|
||||||
|
end
|
||||||
|
|
||||||
|
M.setup()
|
||||||
|
|
||||||
|
return M
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
local options = require('rose-pine.config').options
|
||||||
|
|
||||||
local variants = {
|
local variants = {
|
||||||
main = {
|
main = {
|
||||||
base = '#191724',
|
base = '#191724',
|
||||||
|
|
@ -55,12 +57,5 @@ local variants = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
local palette = {}
|
return vim.o.background == 'light' and variants.dawn
|
||||||
|
or variants[options.dark_variant or 'main']
|
||||||
if vim.o.background == 'light' then
|
|
||||||
palette = variants.dawn
|
|
||||||
else
|
|
||||||
palette = variants[(vim.g.rose_pine_variant == 'moon' and 'moon') or 'main']
|
|
||||||
end
|
|
||||||
|
|
||||||
return palette
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue