Files
solarized.nvim/lua/solarized/util.lua
2021-06-01 12:38:31 -04:00

97 lines
3.1 KiB
Lua

local util = {}
local solarized = require('moonlight.theme')
-- Go trough the table and highlight the group with the color values
util.highlight = function (group, color)
local style = color.style and "gui=" .. color.style or "gui=NONE"
local fg = color.fg and "guifg=" .. color.fg or "guifg=NONE"
local bg = color.bg and "guibg=" .. color.bg or "guibg=NONE"
local sp = color.sp and "guisp=" .. color.sp or ""
local hl = "highlight " .. group .. " " .. style .. " " .. fg .. " " .. bg .. " " .. sp
vim.cmd(hl)
if color.link then vim.cmd("highlight! link " .. group .. " " .. color.link) end
end
-- Only define Solarized if it's the active colorshceme
function util.onColorScheme()
if vim.g.colors_name ~= "solarized" then
vim.cmd [[autocmd! Solarized]]
vim.cmd [[augroup! Solarized]]
end
end
-- Change the background for the terminal, packer and qf windows
util.contrast = function ()
vim.cmd [[augroup Solarized]]
vim.cmd [[ autocmd!]]
vim.cmd [[ autocmd ColorScheme * lua require("solarized.util").onColorScheme()]]
vim.cmd [[ autocmd TermOpen * setlocal winhighlight=Normal:NormalFloat,SignColumn:NormalFloat]]
vim.cmd [[ autocmd FileType packer setlocal winhighlight=Normal:NormalFloat,SignColumn:NormalFloat]]
vim.cmd [[ autocmd FileType qf setlocal winhighlight=Normal:NormalFloat,SignColumn:NormalFloat]]
vim.cmd [[augroup end]]
end
-- Load the theme
function util.load()
-- Set the theme environment
vim.cmd("hi clear")
if vim.fn.exists("syntax_on") then vim.cmd("syntax reset") end
vim.o.background = "dark"
vim.o.termguicolors = true
vim.g.colors_name = "solarized"
-- Load plugins, treesitter and lsp async
local async
async = vim.loop.new_async(vim.schedule_wrap(function ()
solarized.loadTerminal()
-- imort tables for plugins, treesitter and lsp
local plugins = solarized.loadPlugins()
local treesitter = solarized.loadTreeSitter()
local lsp = solarized.loadLSP()
-- loop trough the plugins table and highlight every member
for group, colors in pairs(plugins) do
util.highlight(group, colors)
end
-- loop trough the treesitter table and highlight every member
for group, colors in pairs(treesitter) do
util.highlight(group, colors)
end
-- loop trough the lsp table and highlight every member
for group, colors in pairs(lsp) do
util.highlight(group, colors)
end
-- if contrast is enabled, apply it to sidebars and floating windows
if vim.g.solarized_contrast == true then
util.contrast()
end
async:close()
end))
-- load the most importaint parts of the theme
local editor = solarized.loadEditor()
local syntax = solarized.loadSyntax()
-- load editor highlights
for group, colors in pairs(editor) do
util.highlight(group, colors)
end
-- load syntax highlights
for group, colors in pairs(syntax) do
util.highlight(group, colors)
end
-- load the rest later ( lsp, treesitter, plugins )
async:send()
end
return util