70 lines
2.0 KiB
Lua
70 lines
2.0 KiB
Lua
-- Author : swytch
|
|
-- Created : Friday Oct. 22, 2021 22:04:40 CET
|
|
-- License : GPLv3
|
|
-- Description : core-level functions file
|
|
|
|
|
|
local config = require("astronomy.config")
|
|
local theme = require("astronomy.scheme")
|
|
local colors = require("astronomy.colors")
|
|
|
|
local api = vim.api
|
|
local M = {}
|
|
|
|
-- Apply colors in the editor
|
|
--@param group string: group name
|
|
--@param cols string: color name to be applied to the groups
|
|
local function set_highlights(group, cols)
|
|
api.nvim_command(string.format('highlight %s gui=%s guifg=%s guibg=%s guisp=%s',
|
|
group,
|
|
cols.style or "NONE",
|
|
cols.fg or "NONE",
|
|
cols.bg or "NONE",
|
|
cols.sp or "NONE"
|
|
))
|
|
|
|
if cols.link then
|
|
api.nvim_command(string.format("highlight! link %s %s", group, cols.link))
|
|
end
|
|
end
|
|
|
|
-- Load colorscheme
|
|
--@param scheme table: editor elements with its colors
|
|
--@param custom_tab table: custom color table
|
|
local function load_colorscheme(scheme, custom_tab)
|
|
local color_table = scheme or {}
|
|
local custom_colors = custom_tab or {}
|
|
|
|
-- reset the highlighting
|
|
if vim.fn.exists("sintax_on") then api.nvim_command("syntax reset") end
|
|
vim.opt.background = "dark"
|
|
vim.g.colors_name = "astronomy"
|
|
vim.g.astronomy = 1
|
|
vim.opt.termguicolors = true
|
|
|
|
if type(custom_colors) == "table" then
|
|
if next(custom_colors) ~= nil then
|
|
color_table = vim.tbl_deep_extend("force", {}, color_table, custom_colors)
|
|
end
|
|
end
|
|
|
|
--Load editor colors
|
|
for grp, col in pairs(color_table) do
|
|
set_highlights(grp, col)
|
|
end
|
|
end
|
|
|
|
-- Set and load the color scheme
|
|
--@param opts table: custom options to be applied to the editor
|
|
function M.setup_scheme(opts)
|
|
config.set_options(opts)
|
|
local sch_opts = config.scheme_options
|
|
|
|
local scheme = colors.set_scheme(sch_opts.variant)
|
|
local colorscheme = theme.load_colors(scheme)
|
|
|
|
load_colorscheme(colorscheme, sch_opts.custom_colors)
|
|
end
|
|
|
|
return M
|