diff --git a/lua/rose-pine.lua b/lua/rose-pine.lua new file mode 100644 index 0000000..0fa9c0a --- /dev/null +++ b/lua/rose-pine.lua @@ -0,0 +1,85 @@ +local util = require('rose-pine.util') + +local M = {} + +local config = { + bold_vert_split = false, + dark_variant = 'main', + dim_nc_background = false, + 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 + + 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 + vim.cmd('hi clear') + end + + vim.opt.termguicolors = true + vim.g.colors_name = 'rose-pine' + + local theme = require('rose-pine.theme').get(config) + for group, color in pairs(theme) do + if config.highlight_groups[group] ~= nil then + util.highlight(group, config.highlight_groups[group]) + else + util.highlight(group, color) + end + end +end + +return M diff --git a/lua/rose-pine/init.lua b/lua/rose-pine/init.lua deleted file mode 100644 index 8b3a2c1..0000000 --- a/lua/rose-pine/init.lua +++ /dev/null @@ -1,185 +0,0 @@ -local util = require('rose-pine.util') - -local M = {} -local show_init_messages = true - -local function check_for_deprecated_opts() - local alerts = {} - local should_alert = false - - -- Deprecated options - if vim.g.rose_pine_bold_vertical_split_line ~= nil then - should_alert = true - table.insert(alerts, 'vim.g.rose_pine_bold_vertical_split_line renamed to bold_vert_split') - end - - if vim.g.rose_pine_inactive_background ~= nil then - should_alert = true - table.insert(alerts, 'vim.g.rose_pine_inactive_background renamed to dim_nc_background') - end - - if vim.g.rose_pine_disable_background ~= nil then - should_alert = true - table.insert(alerts, 'vim.g.rose_pine_disable_background renamed to disable_background') - end - - if vim.g.rose_pine_disable_float_background ~= nil then - should_alert = true - table.insert( - alerts, - 'vim.g.rose_pine_disable_float_background renamed to disable_float_background' - ) - end - - if vim.g.rose_pine_disable_italics ~= nil then - should_alert = true - table.insert(alerts, 'vim.g.rose_pine_disable_italics renamed to disable_italics') - end - - if vim.g.rose_pine_colors ~= nil then - should_alert = true - table.insert(alerts, 'vim.g.rose_pine_colors renamed to groups') - end - - if should_alert then - local prefix = ' ' - print('Rosé Pine – https://github.com/rose-pine/neovim') - print(prefix .. 'vim.g.rose_pine_