mirror of
https://codeberg.org/pnx/skift.nvim.git
synced 2026-06-16 04:24:57 +02:00
Initial Commit
This commit is contained in:
commit
694515c168
16 changed files with 1325 additions and 0 deletions
138
lua/skift/init.lua
Normal file
138
lua/skift/init.lua
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
local config = require('skift.config')
|
||||
local cache = require("skift.utils.cache")
|
||||
|
||||
local M = {}
|
||||
|
||||
local function apply_highlights(highlights)
|
||||
for name, val in pairs(highlights) do
|
||||
if type(val) == 'string' then
|
||||
val = { link = val }
|
||||
end
|
||||
vim.api.nvim_set_hl(0, name, val)
|
||||
end
|
||||
end
|
||||
|
||||
local function apply_terminal_colors(c)
|
||||
vim.g.terminal_color_0 = c.terminal_black
|
||||
vim.g.terminal_color_1 = c.terminal_red
|
||||
vim.g.terminal_color_2 = c.terminal_green
|
||||
vim.g.terminal_color_3 = c.terminal_yellow
|
||||
vim.g.terminal_color_4 = c.terminal_blue
|
||||
vim.g.terminal_color_5 = c.terminal_magenta
|
||||
vim.g.terminal_color_6 = c.terminal_cyan
|
||||
vim.g.terminal_color_7 = c.terminal_white
|
||||
vim.g.terminal_color_8 = c.terminal_bright_black
|
||||
vim.g.terminal_color_9 = c.terminal_bright_red
|
||||
vim.g.terminal_color_10 = c.terminal_bright_green
|
||||
vim.g.terminal_color_11 = c.terminal_bright_yellow
|
||||
vim.g.terminal_color_12 = c.terminal_bright_blue
|
||||
vim.g.terminal_color_13 = c.terminal_bright_magenta
|
||||
vim.g.terminal_color_14 = c.terminal_bright_cyan
|
||||
vim.g.terminal_color_15 = c.terminal_bright_white
|
||||
end
|
||||
|
||||
function M.setup(opts)
|
||||
config:merge(opts)
|
||||
end
|
||||
|
||||
function M.load()
|
||||
if vim.g.colors_name then
|
||||
vim.cmd("hi clear")
|
||||
end
|
||||
vim.g.colors_name = "skift"
|
||||
vim.o.termguicolors = true
|
||||
vim.o.background = "dark"
|
||||
|
||||
local cache_key = cache.key(config)
|
||||
local cached = cache.read(cache_key)
|
||||
if cached and cached.highlights and cached.colors then
|
||||
apply_highlights(cached.highlights)
|
||||
apply_terminal_colors(cached.colors)
|
||||
return
|
||||
end
|
||||
|
||||
local c = vim.deepcopy(require("skift.colors"))
|
||||
|
||||
config.on_colors(c)
|
||||
|
||||
local highlights = {}
|
||||
local groups = {
|
||||
require("skift.groups.editor").get(c),
|
||||
require("skift.groups.syntax").get(c),
|
||||
require("skift.groups.treesitter").get(c),
|
||||
require("skift.groups.lsp").get(c),
|
||||
require("skift.groups.integrations").get(c),
|
||||
}
|
||||
|
||||
for _, group in ipairs(groups) do
|
||||
highlights = vim.tbl_extend("force", highlights, group)
|
||||
end
|
||||
|
||||
if config.transparent then
|
||||
local transparent_groups = {
|
||||
"Normal", "NormalNC", "NormalFloat", "SignColumn",
|
||||
"FoldColumn", "TabLineFill", "StatusLine", "StatusLineNC",
|
||||
"NvimTreeNormal", "NeoTreeNormal", "NeoTreeNormalNC",
|
||||
"TreesitterContext",
|
||||
}
|
||||
for _, name in ipairs(transparent_groups) do
|
||||
if highlights[name] then
|
||||
highlights[name].bg = "NONE"
|
||||
end
|
||||
end
|
||||
highlights.WinSeparator = { fg = "NONE" }
|
||||
highlights.VertSplit = { fg = "NONE" }
|
||||
highlights.FloatBorder = { fg = "NONE", bg = "NONE" }
|
||||
end
|
||||
|
||||
if not config.bold then
|
||||
for _, hl in pairs(highlights) do
|
||||
hl.bold = false
|
||||
end
|
||||
end
|
||||
|
||||
if not config.italic then
|
||||
for _, hl in pairs(highlights) do
|
||||
hl.italic = false
|
||||
end
|
||||
elseif not config.italic_comments then
|
||||
for _, name in ipairs({ "Comment", "@comment", "@comment.documentation" }) do
|
||||
if highlights[name] then
|
||||
highlights[name].italic = false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
config.on_highlights(highlights, c)
|
||||
|
||||
apply_highlights(highlights)
|
||||
apply_terminal_colors(c)
|
||||
|
||||
cache.write(cache_key, {
|
||||
highlights = highlights,
|
||||
colors = {
|
||||
terminal_black = c.terminal_black,
|
||||
terminal_red = c.terminal_red,
|
||||
terminal_green = c.terminal_green,
|
||||
terminal_yellow = c.terminal_yellow,
|
||||
terminal_blue = c.terminal_blue,
|
||||
terminal_magenta = c.terminal_magenta,
|
||||
terminal_cyan = c.terminal_cyan,
|
||||
terminal_white = c.terminal_white,
|
||||
terminal_bright_black = c.terminal_bright_black,
|
||||
terminal_bright_red = c.terminal_bright_red,
|
||||
terminal_bright_green = c.terminal_bright_green,
|
||||
terminal_bright_yellow = c.terminal_bright_yellow,
|
||||
terminal_bright_blue = c.terminal_bright_blue,
|
||||
terminal_bright_magenta = c.terminal_bright_magenta,
|
||||
terminal_bright_cyan = c.terminal_bright_cyan,
|
||||
terminal_bright_white = c.terminal_bright_white,
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
function M.clear_cache()
|
||||
cache.clear()
|
||||
end
|
||||
|
||||
return M
|
||||
Loading…
Add table
Add a link
Reference in a new issue