pojokcodeid.nvim-lazy/lua/plugins/colorscheme.lua

504 lines
19 KiB
Lua
Raw Normal View History

2023-03-05 10:49:03 +07:00
local nightfox = false
2023-03-04 11:53:44 +07:00
_G.switch = function(param, case_table)
2024-05-24 19:20:23 +07:00
local case = case_table[param]
if case then
return case()
end
local def = case_table["default"]
return def and def() or nil
2023-03-04 11:53:44 +07:00
end
2024-05-24 23:43:38 +07:00
_G.substring = function(text, key)
local index, _ = string.find(text, key)
if index then
return true
else
return false
end
end
_G.extract = function(text)
local result = {}
for substring in string.gmatch(text, "[^_]+") do
table.insert(result, substring)
end
return result
end
2024-05-21 19:49:53 +07:00
local color = vim.g.pcode_colorscheme or "gruvbox-baby"
2024-05-25 09:28:49 +07:00
local materialstyle = extract(color)[2] or "oceanic"
local material_style = (materialstyle == "deepocean") and "deep ocean" or materialstyle
2024-05-24 23:43:38 +07:00
switch(color, {
2024-05-24 19:20:23 +07:00
["nightfox"] = function()
nightfox = true
end,
["dayfox"] = function()
nightfox = true
end,
["dawnfox"] = function()
nightfox = true
end,
["duskfox"] = function()
nightfox = true
end,
["nordfox"] = function()
nightfox = true
end,
["terafox"] = function()
nightfox = true
end,
["carbonfox"] = function()
nightfox = true
end,
2024-05-25 09:28:49 +07:00
default = function() end,
2024-05-21 14:20:50 +07:00
})
2023-03-04 11:53:44 +07:00
2024-05-25 09:28:49 +07:00
-- local transparent = false
2024-05-21 19:49:53 +07:00
local transparent_mode = vim.g.pcode_transparent_mode or 0
2024-05-25 09:28:49 +07:00
-- if transparent_mode ~= nil then
-- if transparent_mode == 1 then
-- transparent = true
-- end
-- end
2023-03-04 16:26:54 +07:00
2023-03-04 11:53:44 +07:00
return {
2024-05-24 19:20:23 +07:00
-- color scheme
{
"luisiacc/gruvbox-baby",
lazy = true,
2024-05-25 09:28:49 +07:00
enabled = (color == "gruvbox-baby") and true or false,
2024-05-24 19:20:23 +07:00
config = function()
local colors = require("gruvbox-baby.colors").config()
vim.g.gruvbox_baby_highlights = {
StatusLine = { fg = colors.fg, bg = colors.bg },
WinBarNC = { fg = colors.fg, bg = colors.bg },
BufferLineFill = { bg = colors.bg },
BufferLineFillNC = { bg = colors.bg },
BufferLineUnfocusedFill = { bg = colors.bg },
TabLine = { bg = colors.bg, fg = colors.fg },
2024-05-25 06:14:47 +07:00
NvimTreeNormal = { bg = colors.bg, fg = colors.fg },
NvimTreeNormalNC = { bg = colors.bg, fg = colors.fg },
NvimTreeWinSeparator = { fg = colors.fg },
Pmenu = { fg = colors.fg, bg = colors.bg },
WhichKeyFloat = { fg = colors.fg, bg = colors.bg },
WhichKeyBorder = { fg = colors.fg, bg = colors.bg },
NormalFloat = { fg = colors.fg, bg = colors.bg },
NormalNC = { fg = colors.fg, bg = colors.bg },
FloatBorder = { fg = colors.fg, bg = colors.bg },
LspInfoBorder = { fg = colors.fg, bg = colors.bg },
2024-05-24 19:20:23 +07:00
}
2024-05-25 09:28:49 +07:00
vim.g.gruvbox_baby_transparent_mode = transparent_mode
2024-05-24 19:20:23 +07:00
end,
},
{
"Mofiqul/dracula.nvim",
2024-05-25 09:28:49 +07:00
enabled = (color == "dracula") and true or false,
2024-05-24 19:20:23 +07:00
config = function()
local colors = require("dracula").colors()
require("dracula").setup {
colors = {
-- purple = "#FCC76A",
menu = colors.bg,
},
italic_comment = true,
lualine_bg_color = colors.bg,
overrides = {
Keywords = { fg = colors.cyan, italic = true },
-- Function = { fg = colors.yellow, italic = true },
["@keyword"] = { fg = colors.pink, italic = true },
["@keyword.function"] = { fg = colors.cyan, italic = true },
["@function"] = { fg = colors.green, italic = true },
["@tag.javascript"] = { fg = colors.cyan },
["@tag.attribute"] = { fg = colors.green, italic = true },
-- ["@tag.attribute.javascript"] = { fg = colors.orange, italic = true },
NvimTreeFolderIcon = { fg = "#6776a7" },
CmpItemAbbr = { fg = "#ABB2BF" },
CmpItemKind = { fg = "#ABB2BF" },
CmpItemAbbrDeprecated = { fg = "#ABB2BF" },
CmpItemAbbrMatch = { fg = "#8BE9FD" },
htmlLink = { fg = "#BD93F9", underline = false },
Underlined = { fg = "#8BE9FD" },
NvimTreeSpecialFile = { fg = "#FF79C6" },
SpellBad = { fg = "#FF6E6E" },
illuminatedWord = { bg = "#3b4261" },
illuminatedCurWord = { bg = "#3b4261" },
IlluminatedWordText = { bg = "#3b4261" },
IlluminatedWordRead = { bg = "#3b4261" },
IlluminatedWordWrite = { bg = "#3b4261" },
DiffChange = { fg = colors.fg },
StatusLine = { fg = colors.fg, bg = colors.bg },
StatusLineTerm = { fg = colors.fg, bg = colors.bg },
BufferLineFill = { bg = colors.bg },
Pmenu = { fg = colors.fg, bg = colors.bg },
WinBarNC = { fg = colors.fg, bg = colors.bg },
LspInfoBorder = { fg = colors.fg },
},
2024-05-25 09:28:49 +07:00
transparent_bg = (transparent_mode == 1) and true or false,
2024-05-24 19:20:23 +07:00
}
end,
},
{
"folke/tokyonight.nvim",
2024-05-25 09:28:49 +07:00
enabled = substring(tostring(color), "tokyonight") and true or false,
2024-05-24 19:20:23 +07:00
config = function()
require "user.tokyonight"
end,
},
{
"shaunsingh/nord.nvim",
2024-05-25 09:28:49 +07:00
enabled = (color == "nord") and true or false,
2024-05-24 19:20:23 +07:00
config = function()
2024-05-25 09:28:49 +07:00
vim.g.nord_disable_background = (transparent_mode == 1) and true or false
2024-05-24 19:20:23 +07:00
require("nord").set()
local nord = require "nord.colors"
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "*",
callback = function()
vim.api.nvim_set_hl(0, "StatusLine", { bg = "NONE", fg = nord.nord4_gui })
vim.api.nvim_set_hl(0, "WinBarNC", { bg = nord.nord0_gui, fg = nord.nord4_gui })
vim.api.nvim_set_hl(0, "WhichKeyFloat", { bg = nord.nord0_gui, fg = nord.nord4_gui })
-- vim.api.nvim_set_hl(0, "StatusLine", { cterm = "bold", bold = true })
end,
})
end,
},
{
"sainnhe/sonokai",
2024-05-25 09:28:49 +07:00
enabled = substring(tostring(color), "sonokai") and true or false,
2024-05-24 19:20:23 +07:00
config = function()
vim.api.nvim_create_autocmd("ColorScheme", {
group = vim.api.nvim_create_augroup("custom_highlights_sonokai", {}),
pattern = "sonokai",
callback = function()
local config = vim.fn["sonokai#get_configuration"]()
local palette = vim.fn["sonokai#get_palette"](config.style, config.colors_override)
local set_hl = vim.fn["sonokai#highlight"]
set_hl("StatusLine", palette.fg, palette.none)
set_hl("StatusLineTerm", palette.fg, palette.none)
set_hl("StatusLineNC", palette.fg, palette.none)
set_hl("StatusLineTermNC", palette.fg, palette.none)
set_hl("LualineNormal", palette.fg, palette.none)
set_hl("NvimTreeNormal", palette.fg, palette.bg0)
set_hl("NvimTreeCursorLine", palette.fg, palette.bg1)
set_hl("NvimTreeEndOfBuffer", palette.fg, palette.bg0)
set_hl("Pmenu", palette.fg, palette.bg0)
set_hl("WhichKeyFloat", palette.fg, palette.bg0)
set_hl("WhichKey", palette.fg, palette.bg0)
set_hl("WhichKeyBorder", palette.fg, palette.bg0)
set_hl("NormalFloat", palette.fg, palette.bg0)
set_hl("Normal", palette.fg, palette.bg0)
set_hl("NormalNC", palette.fg, palette.bg0)
set_hl("FloatBorder", palette.fg, palette.bg0)
set_hl("LspInfoNormal", palette.fg, palette.bg0)
end,
})
2024-05-25 09:28:49 +07:00
vim.g.sonokai_style = extract(color)[2] or "default"
vim.g.sonokai_transparent_background = (transparent_mode == 1) and 2 or 0
2024-05-24 19:20:23 +07:00
end,
},
2024-05-25 09:28:49 +07:00
{ "lunarvim/lunar.nvim", enabled = (color == "lunar") and true or false },
2024-05-24 19:20:23 +07:00
{
"marko-cerovac/material.nvim",
2024-05-25 09:28:49 +07:00
enabled = substring(tostring(color), "material") and true or false,
2024-05-24 19:20:23 +07:00
config = function()
local colors = require "material.colors"
vim.g.material_style = material_style
require("material").setup {
lualine_style = "stealth",
disable = {
2024-05-25 09:28:49 +07:00
background = (transparent_mode == 1) and true or false,
2024-05-24 19:20:23 +07:00
},
plugins = { -- Uncomment the plugins that you use to highlight them
-- Available plugins:
"dap",
-- "dashboard",
-- "eyeliner",
"fidget",
-- "flash",
"gitsigns",
-- "harpoon",
-- "hop",
"illuminate",
"indent-blankline",
-- "lspsaga",
"mini",
-- "neogit",
-- "neotest",
-- "neo-tree",
-- "neorg",
"noice",
"nvim-cmp",
"nvim-navic",
"nvim-tree",
"nvim-web-devicons",
"rainbow-delimiters",
-- "sneak",
"telescope",
-- "trouble",
"which-key",
"nvim-notify",
},
custom_highlights = {
BufferLineFill = { bg = colors.bg },
StatusLine = { fg = "#f8f8f2", bg = colors.bg },
StatusLineTerm = { fg = "#f8f8f2", bg = colors.bg },
WinBarNC = { fg = colors.fg, bg = colors.bg },
2024-05-25 09:28:49 +07:00
CursorLine = { bg = "#333842" },
2024-05-24 19:20:23 +07:00
},
}
end,
},
{
"olimorris/onedarkpro.nvim",
priority = 1000, -- Ensure it loads first
2024-05-25 09:28:49 +07:00
enabled = substring(tostring(color), "onedark") and true or false,
2024-05-24 19:20:23 +07:00
config = function()
2024-05-25 09:28:49 +07:00
local is_transparent = (transparent_mode == 1) and true or false
2024-05-24 19:20:23 +07:00
require("onedarkpro").setup {
styles = {
types = "NONE",
methods = "NONE",
numbers = "NONE",
strings = "NONE",
comments = "italic",
keywords = "bold,italic",
constants = "NONE",
functions = "italic",
operators = "NONE",
variables = "NONE",
parameters = "NONE",
conditionals = "italic",
virtual_text = "NONE",
tags = "italic",
},
colors = {
2024-05-24 23:43:38 +07:00
bg_statusline = "#282c34",
2024-05-24 19:20:23 +07:00
onedark = {
green = "#99c379",
gray = "#8094b4",
red = "#e06c75",
purple = "#c678dd",
yellow = "#e5c07a",
blue = "#61afef",
cyan = "#56b6c2",
indentline = "#3b4261",
float_bg = "#282c34",
},
2024-05-24 23:43:38 +07:00
onedark_dark = {
bg_statusline = "#000",
},
2024-05-24 19:20:23 +07:00
},
options = {
cursorline = true,
transparency = is_transparent,
terminal_colors = true,
},
highlights = {
-- overide cursor line fill colors
LineNr = { fg = "#49505E" }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
CursorLineNr = { fg = "${blue}" }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
CursorLine = { bg = "#333842" },
Cursor = { fg = "${bg}", bg = "${fg}" }, -- character under the cursor
lCursor = { fg = "${bg}", bg = "${fg}" }, -- the character under the cursor when |language-mapping| is used (see 'guicursor')
CursorIM = { fg = "${bg}", bg = "${fg}" }, -- like Cursor, but used when in IME mode |CursorIM|
CursorColumn = { bg = "#333842" }, -- Screen-column at the cursor, when 'cursorcolumn' is set.
-- overide nvimtree folder icon fill color
NvimTreeFolderIcon = { fg = "${gray}" },
-- overide nvimtree text fill color folder opened
NvimTreeOpenedFolderName = { fg = "${blue}" },
-- overide nvimtree text fill color root folder
NvimTreeRootFolder = { fg = "${yellow}" },
NvimTreeSpecialFile = { fg = "${orange}" },
NvimTreeWinSeparator = { fg = "#202329" },
NvimTreeIndentMarker = { fg = "#3E4450" },
-- overide indenline fill color
IblIndent = { fg = "#3E4450" },
-- overide cmp cursorline fill color with #333842
PmenuSel = { bg = "#333842" },
illuminatedWord = { bg = "#3b4261" },
illuminatedCurWord = { bg = "#3b4261" },
IlluminatedWordText = { bg = "#3b4261" },
IlluminatedWordRead = { bg = "#3b4261" },
IlluminatedWordWrite = { bg = "#3b4261" },
StatusLine = { fg = "#f8f8f2", bg = is_transparent and "NONE" or "${bg}" },
StatusLineTerm = { fg = "#f8f8f2", bg = "${bg}" },
BufferLineFill = { bg = is_transparent and "NONE" or "${bg}" },
["@string.special.url.html"] = { fg = "${green}" },
["@lsp.type.parameter"] = { fg = "${gray}" },
-- ["@text.uri.html"] = { fg = "${green}" },
-- ["@tag.javascript"] = { fg = "${red}" },
-- ["@tag.attribute"] = { fg = "${orange}", style = "italic" },
-- ["@constructor.javascript"] = { fg = "${red}" },
-- ["@variable"] = { fg = "${fg}", style = "NONE" }, -- various variable names
-- ["@variable.builtin"] = { fg = "${red}", style = "NONE" },
-- ["@variable.member"] = "${cyan}",
-- ["@variable.parameter"] = "${red}",
-- ["@property"] = { fg = "${cyan}" }, -- similar to `@field`
["@property.lua"] = { fg = "${red}", bg = "NONE" },
["@lsp.type.property.lua"] = { fg = "${cyan}", bg = "NONE" },
["@lsp.type.variable.lua"] = { fg = "${red}", bg = "NONE" },
NvimTreeGitDirty = { fg = "${yellow}" },
Pmenu = { fg = "${fg}", bg = "${bg}" },
PmenuThumb = { bg = "${gray}" }, -- Popup menu: Thumb of the scrollbar.
-- overide lualine fill color with bg color
LualineNormal = { bg = "${bg}" },
-- overide lualine_c fill color with bg color
LualineC = { bg = "${bg}" },
-- overide lualine_x fill color with bg color
LualineX = { bg = "${bg}" },
-- overide which-key fill color with bg color
-- WhichKey = { bg = "${bg}" },
-- -- overide which-key fill color with bg color
-- WhichKeySeperator = { bg = "${bg}" },
-- -- overide which-key fill color with bg color
-- WhichKeyDesc = { fg = "${red}" },
-- -- overide which-key fill color with bg color
-- WhichKeyFloat = { bg = "${bg}" },
WhichKeyFloat = { bg = is_transparent and "NONE" or "${bg}" },
-- -- overide which-key fill color with bg color
-- WhichKeyValue = { bg = "${bg}" },
-- -- overide which-key fill color with bg color
-- WhichKeyBorder = { bg = "${bg}" },
LspInfoBorder = { fg = "${fg}" },
2024-05-24 23:43:38 +07:00
NormalFloat = { fg = "${fg}", bg = is_transparent and "NONE" or "${bg}" },
Normal = { fg = "${fg}", bg = is_transparent and "NONE" or "${bg}" },
NormalNC = { fg = "${fg}", bg = is_transparent and "NONE" or "${bg}" },
FloatBorder = { fg = "${fg}", bg = is_transparent and "NONE" or "${bg}" },
2024-05-24 19:20:23 +07:00
},
}
end,
},
{
"catppuccin/nvim",
2024-05-25 09:28:49 +07:00
enabled = substring(tostring(color), "catppuccin") and true or false,
2024-05-24 19:20:23 +07:00
name = "catppuccin",
priority = 1000,
config = function()
2024-05-25 09:28:49 +07:00
local transparent = (transparent_mode == 1) and true or false
2024-05-24 19:20:23 +07:00
require("catppuccin").setup {
flavour = "auto", -- latte, frappe, macchiato, mocha
background = { -- :h background
light = "latte",
dark = "mocha",
},
transparent_background = transparent, -- disables setting the background color.
show_end_of_buffer = false, -- shows the '~' characters after the end of buffers
term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`)
dim_inactive = {
enabled = false, -- dims the background color of inactive window
shade = "dark",
percentage = 0.15, -- percentage of the shade to apply to the inactive window
},
no_italic = false, -- Force no italic
no_bold = false, -- Force no bold
no_underline = false, -- Force no underline
styles = { -- Handles the styles of general hi groups (see `:h highlight-args`):
comments = { "italic" }, -- Change the style of comments
conditionals = { "italic" },
loops = {},
functions = {},
keywords = { "italic" },
strings = {},
variables = {},
numbers = {},
booleans = {},
properties = {},
types = {},
operators = {},
-- miscs = {}, -- Uncomment to turn off hard-coded styles
},
color_overrides = {},
custom_highlights = function(colors)
return {
NvimTreeNormal = { fg = colors.text, bg = transparent and colors.none or colors.base },
NvimTreeWinSeparator = { fg = colors.mantle, bg = transparent and colors.none or colors.none },
Pmenu = { fg = colors.text, bg = transparent and colors.none or colors.base },
WhichKeyFloat = { fg = colors.text, bg = transparent and colors.none or colors.base },
WhichKey = { fg = colors.text, bg = transparent and colors.none or colors.base },
WhichKeyBorder = { fg = colors.text, bg = transparent and colors.none or colors.base },
NormalFloat = { fg = colors.text, bg = transparent and colors.none or colors.base },
Normal = { fg = colors.text, bg = transparent and colors.none or colors.base },
NormalNC = { fg = colors.text, bg = transparent and colors.none or colors.base },
StatusLine = { fg = colors.text, bg = colors.none },
}
end,
highlight_overrides = {
all = function(colors)
return {
["@markup.link.url"] = { fg = colors.rosewater, style = { "italic" } },
}
end,
},
default_integrations = true,
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
treesitter = true,
notify = false,
mini = {
enabled = true,
indentscope_color = "",
},
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
},
}
end,
},
{
"EdenEast/nightfox.nvim",
enabled = nightfox,
config = function()
local palette = require("nightfox.palette").load "nightfox"
local Color = require "nightfox.lib.color"
local bg = Color.from_hex(palette.bg1)
require("nightfox").setup {
options = {
terminal_colors = true,
2024-05-25 09:28:49 +07:00
transparent = (transparent_mode == 1) and true or false,
2024-05-24 19:20:23 +07:00
styles = { -- Style to be applied to different syntax groups
comments = "italic", -- Value is any valid attr-list value `:help attr-list`
conditionals = "italic",
constants = "NONE",
functions = "NONE",
keywords = "italic",
numbers = "NONE",
operators = "NONE",
strings = "NONE",
types = "NONE",
variables = "NONE",
},
},
palettes = {
all = {
bg0 = palette.bg1,
bg = palette.bg1,
},
},
specs = {},
groups = {
all = {
-- overide bufferline fill color
BufferLineFill = { bg = palette.bg1 },
BufferLineUnfocusedFill = { bg = palette.bg },
-- overide nvimtree fill color with bg color
NvimTreeNormal = { bg = palette.bg },
NvimTreeWinSeparator = {
fg = palette.bg0,
},
Underlined = { style = "NONE" }, -- overide statusline fill color with bg color
StatusLine = { bg = "NONE" },
StatusLineTerm = { bg = palette.bg },
-- overide lualine fill color with bg color
LualineNormal = { bg = palette.bg },
Pmenu = { bg = "bg3" },
PmenuSel = { bg = "bg3" },
},
},
}
end,
},
2023-03-04 11:53:44 +07:00
}