Initial commit

This commit is contained in:
2026-03-14 11:33:27 -05:00
commit 0abf4107bc
5 changed files with 676 additions and 0 deletions

View File

@@ -0,0 +1,628 @@
--
-- Built with,
--
-- ,gggg,
-- d8" "8I ,dPYb,
-- 88 ,dP IP'`Yb
-- 8888888P" I8 8I
-- 88 I8 8'
-- 88 gg gg ,g, I8 dPgg,
-- ,aa,_88 I8 8I ,8'8, I8dP" "8I
-- dP" "88P I8, ,8I ,8' Yb I8P I8
-- Yb,_,d88b,,_ ,d8b, ,d8b,,8'_ 8) ,d8 I8,
-- "Y8P" "Y888888P'"Y88P"`Y8P' "YY8P8P88P `Y8
--
---@diagnostic disable: undefined-global
local lush = require("lush")
local hsl = lush.hsl
local darken = function(color, by)
by = 12 * (by or 1)
return color.darken(by)
end
local lighten = function(color, by)
by = 12 * (by or 1)
return color.lighten(by)
end
local black = hsl("#101017")
local black2 = hsl("#101016")
local base_colors = {
black = black,
black2 = black2,
blue = hsl("#6877bb"),
cyan = hsl("#00FFFF").darken(40),
green = hsl("#6A906A"),
orange = hsl("#BC8043").lighten(8),
red = hsl("#CF6060"),
tan = hsl("#9A8065"),
purple = hsl("#9876AA"),
yellow = hsl("#ffff80").darken(53),
white = hsl("#a5a0a1").lighten(12)
}
local primary_colors = {
black = base_colors.black,
black2 = base_colors.black2,
blue = base_colors.blue,
cyan = base_colors.cyan,
green = base_colors.green,
grey = darken(base_colors.white, 5),
orange = base_colors.orange,
light_orange = lighten(base_colors.orange, 1.5),
purple = base_colors.purple,
light_grey = darken(base_colors.white, 1.4),
white = base_colors.white,
red = base_colors.red,
tan = base_colors.tan,
yellow = base_colors.yellow
}
local colors = {
BufferBackground = primary_colors.black,
ColorColumnBackground = lighten(primary_colors.black, 0.8),
CommentForeground = lighten(primary_colors.grey, 2.1),
ConcealBackground = primary_colors.grey,
ConcealForeground = darken(primary_colors.white),
ConstantForeground = primary_colors.purple,
CursorLineBackground = lighten(primary_colors.black, 0.8),
CursorLineNrForeground = primary_colors.green,
DirectoryForeground = lighten(primary_colors.light_grey, 1),
DirectoryIconForeground = primary_colors.tan,
EOBBackground = primary_colors.black,
ErrorBackground = darken(primary_colors.red, 5),
ErrorForeground = primary_colors.red,
FileForeground = primary_colors.light_grey,
FloatBackground = lighten(primary_colors.black, 0.8),
FloatForeground = lighten(primary_colors.white, 2),
FunctionForeground = primary_colors.light_orange,
HighlightBackground = "NONE",
HighlightForeground = lighten(primary_colors.white, 1.5),
HintForeground = darken(primary_colors.white, 1),
InfoForeground = lighten(primary_colors.white),
InlayForeground = lighten(primary_colors.grey, 1),
KeywordForeground = primary_colors.orange,
LineNrForeground = darken(primary_colors.white, 4),
NamespaceForeground = primary_colors.orange,
NonTextForeground = lighten(primary_colors.grey, 1),
NormalForeground = primary_colors.white,
NumberForeground = primary_colors.blue,
NrBackground = darken(primary_colors.black, 3.5),
OperatorForeground = darken(primary_colors.orange, 1),
PmenuSelBackground = lighten(primary_colors.black, 2),
PreProcForeground = primary_colors.yellow,
ProgressForeground = darken(primary_colors.white),
RootForeground = primary_colors.green,
ScrollViewBackground = hsl("#FFFFFF"),
ScrollViewForeground = "NONE",
SearchBackground = "NONE",
SearchForeground = primary_colors.blue,
SelectionBackground = lighten(primary_colors.black, 2),
SpecialForeground = primary_colors.orange,
StatusBackground = lighten(primary_colors.black, 0.7),
StatusBackgroundNC = lighten(primary_colors.black2, 0.7),
StringForeground = primary_colors.green,
WarningForeground = primary_colors.yellow
}
vim.g.choosewin_color_label = {
gui = {colors.PmenuSelBackground.hex, colors.FloatForeground.hex, "bold"}
}
vim.g.choosewin_color_label_current = {
gui = {primary_colors.green.hex, colors.FloatBackground.hex, "bold"}
}
vim.g.choosewin_color_other = {
gui = {colors.StatusBackground.hex}
}
local create_lualine_theme = function()
local theme_colors = {
background_i = darken(primary_colors.green, 2).hex,
background_n = lighten(primary_colors.black, 2.2).hex,
background_b = lighten(primary_colors.black, 1.3).hex,
background_c = colors.StatusBackground.hex,
background_cm = darken(primary_colors.blue, 3.5).hex,
background_r = darken(primary_colors.red, 3).hex,
background_v = darken(primary_colors.blue, 2).hex,
foreground = lighten(primary_colors.white, 1).hex,
foreground_2 = primary_colors.white.hex,
foreground_3 = darken(primary_colors.white).hex
}
return {
normal = {
a = {
bg = theme_colors.background_n,
fg = theme_colors.foreground,
gui = "bold"
},
b = {bg = theme_colors.background_b, fg = theme_colors.foreground_2},
c = {bg = theme_colors.background_c, fg = theme_colors.foreground_3}
},
insert = {
a = {
bg = theme_colors.background_i,
fg = theme_colors.foreground,
gui = "bold"
},
b = {bg = theme_colors.background_b, fg = theme_colors.foreground_2},
c = {bg = theme_colors.background_c, fg = theme_colors.foreground_3}
},
visual = {
a = {
bg = theme_colors.background_v,
fg = theme_colors.foreground,
gui = "bold"
},
b = {bg = theme_colors.background_b, fg = theme_colors.foreground_2},
c = {bg = theme_colors.background_c, fg = theme_colors.foreground_3}
},
replace = {
a = {
bg = theme_colors.background_r,
fg = theme_colors.foreground,
gui = "bold"
},
b = {bg = theme_colors.background_b, fg = theme_colors.foreground_2},
c = {bg = theme_colors.background_c, fg = theme_colors.foreground_3}
},
command = {
a = {
bg = theme_colors.background_cm,
fg = theme_colors.foreground,
gui = "bold"
},
b = {bg = theme_colors.background_b, fg = theme_colors.foreground_2},
c = {bg = theme_colors.background_c, fg = theme_colors.foreground_3}
},
inactive = {
a = {
bg = theme_colors.background_n,
fg = theme_colors.foreground,
gui = "bold"
},
b = {bg = theme_colors.background_b, fg = theme_colors.foreground_2},
c = {bg = theme_colors.background_c, fg = theme_colors.foreground_3}
}
}
end
local ok, lualine = pcall(require, "lualine")
if ok then
lualine.setup({options = {theme = create_lualine_theme()}})
local group =
vim.api.nvim_create_augroup("darcula_lush_theme_cfg", {clear = true})
vim.api.nvim_create_autocmd(
"ColorScheme",
{
group = group,
pattern = "darcula_lush",
callback = function()
lualine.setup({options = {theme = create_lualine_theme()}})
end
}
)
end
local theme =
lush(
function(injected_functions)
local sym = injected_functions.sym
return {
-- Diagnostics general
--
CodeError {gui = "reverse"},
CodeHint {gui = "reverse"},
CodeInfo {gui = "reverse"},
CodeWarn {gui = "reverse"},
ErrorSign {bg = colors.NrBackground, fg = colors.ErrorForeground},
HintSign {bg = colors.NrBackground, fg = colors.HintForeground},
InfoSign {bg = colors.NrBackground, fg = colors.InfoForeground},
WarningSign {bg = colors.NrBackground, fg = colors.WarningForeground},
IblScope {fg = colors.ConcealForeground, bg = "NONE"},
IdentifierUnderCaret {
gui = "underline,bold,italic"
},
IdentifierUnderCaretWrite {
gui = "underline,bold,italic"
},
--
--
-- c/cpp
cFunction {fg = colors.FunctionForeground},
cppDestructor {fg = colors.FunctionForeground},
--
-- CoC
CocErrorHighlight {fg = colors.ErrorForeground, gui = "bold,underline"},
CocHintHighlight {fg = colors.HintForeground, gui = "bold,underline"},
CocInfoHighlight {fg = colors.InfoForeground, gui = "bold,underline"},
CocWarnHighlight {fg = colors.WarningForeground, gui = "bold,underline"},
CocHighlightRead {IdentifierUnderCaret},
CocHighlightText {IdentifierUnderCaret},
CocHighlightWrite {IdentifierUnderCaretWrite},
CocCodeLens {fg = colors.InlayForeground, bg = "NONE"},
CocErrorFloat {fg = colors.FloatForeground, bg = colors.FloatBackground},
CocFloating {fg = colors.FloatForeground, bg = colors.FloatBackground},
CocHintFloat {fg = colors.FloatForeground, bg = colors.FloatBackground},
CocHintVirtualText {fg = colors.InlayForeground, bg = "NONE"},
CocInfoFloat {fg = colors.FloatForeground, bg = colors.FloatBackground},
CocInlayHint {fg = colors.InlayForeground, bg = "NONE"},
CocMenuSel {bg = colors.PmenuSelBackground},
CocNotificationError {
fg = colors.FloatForeground,
bg = colors.FloatBackground
},
CocNotificationInfo {
fg = colors.FloatForeground,
bg = colors.FloatBackground
},
CocNotificationProgress {
fg = colors.ProgressForeground,
bg = colors.FloatBackground
},
CocNotificationWarning {
fg = colors.FloatForeground,
bg = colors.FloatBackground
},
CocPumMenu {fg = colors.FloatForeground, bg = colors.FloatBackground},
CocSearch {fg = colors.SearchForeground},
CocSemClass {fg = colors.FunctionForeground},
CocSymbolConstant {fg = colors.ConstantForeground},
CocSymbolConstructor {fg = colors.FunctionForeground},
CocSymbolFunction {fg = colors.FunctionForeground},
CocSymbolMethod {fg = colors.FunctionForeground},
CocUnderline {fg = colors.NumberForeground, gui = "bold,underline"},
CocWarningFloat {fg = colors.FloatForeground, bg = colors.FloatBackground},
-- easymotion
EasyMotionShade {fg = colors.CommentForeground},
EasyMotionIncSearch {
fg = colors.SearchForeground,
gui = "bold,italic,underline"
},
EasyMotionTarget {gui = "underline", fg = colors.WarningForeground},
--
-- fidget
FidgetDone {fg = colors.StringForeground},
FidgetGroup {fg = darken(colors.NormalForeground, 7)},
FidgetProgress {fg = colors.NumberForeground},
--
-- gitsigns
GitSignsCurrentLineBlame {fg = colors.CommentForeground, bg = "NONE"},
--
-- lua
luaParenError {bg = "NONE"},
--
-- nvim-cmp
CmpItemAbbr {fg = colors.NormalForeground},
CmpItemAbbrMatch {fg = colors.NumberForeground},
CmpItemKind {fg = colors.KeywordForeground},
CmpItemKindDefault {fg = colors.KeywordForeground},
--
-- nvim notify
NotifyBackground {
bg = colors.FloatBackground,
fg = colors.FloatBackground
},
NotifyINFOBody {
-- bg = colors.FloatBackground,
fg = colors.FloatForeground
},
NotifyINFOBorder {
-- bg = colors.FloatBackground,
fg = colors.FloatForeground
},
NotifyINFOIcon {
-- bg = colors.FloatBackground,
fg = colors.StringForeground
},
NotifyINFOTitle {
-- bg = colors.FloatBackground,
fg = colors.StringForeground
},
NotifyERRORBody {
-- bg = colors.FloatBackground,
fg = colors.FloatForeground
},
NotifyERRORBorder {
-- bg = colors.FloatBackground,
fg = colors.FloatForeground
},
NotifyERRORIcon {
-- bg = colors.FloatBackground,
fg = colors.ErrorForeground
},
NotifyERRORTitle {
-- bg = colors.FloatBackground,
fg = colors.ErrorForeground
},
NotifyWARNBody {
-- bg = colors.FloatBackground,
fg = colors.FloatForeground
},
NotifyWARNBorder {
-- bg = colors.FloatBackground,
fg = colors.FloatForeground
},
NotifyWARNIcon {
-- bg = colors.FloatBackground,
fg = colors.WarningForeground
},
NotifyWARNTitle {
-- bg = colors.FloatBackground,
fg = colors.WarningForeground
},
NotifyDEBUGBody {
-- bg = colors.FloatBackground,
fg = colors.FloatForeground
},
NotifyDEBUGBorder {
-- bg = colors.FloatBackground,
fg = colors.FloatForeground
},
NotifyDEBUGIcon {
-- bg = colors.FloatBackground,
fg = colors.NumberForeground
},
NotifyDEBUGTitle {
-- bg = colors.FloatBackground,
fg = colors.NumberForeground
},
NotifyTRACEBody {
-- bg = colors.FloatBackground,
fg = colors.ConstantForeground
},
NotifyTRACEBorder {
-- bg = colors.FloatBackground,
fg = colors.ConstantForeground
},
--
-- nvim tree
NvimTreeEndOfBuffer {bg = colors.EOBBackground},
NvimTreeFolderIcon {fg = colors.DirectoryIconForeground},
NvimTreeFolderName {fg = colors.DirectoryForeground, gui = "bold"},
NvimTreeNormal {bg = colors.EOBBackground, fg = colors.FileForeground},
NvimTreeOpenedFolderName {fg = colors.DirectoryForeground, gui = "bold"},
NvimTreeRootFolder {fg = colors.RootForeground},
NvimTreeGitDirty {fg = colors.ErrorForeground},
NvimTreeGitDirtyIcon {fg = colors.ErrorForeground},
NvimTreeSymlink {fg = colors.NumberForeground, gui = "italic"},
NvimTreeExecFile {fg = colors.StringForeground, gui = "italic"},
--
-- nvim scrollview
ScrollView {
fg = colors.ScrollViewForeground,
bg = colors.ScrollViewBackground
},
--
-- Telescope
TelescopeBorder {bg = lighten(colors.EOBBackground, 1)},
TelescopeMatching {fg = colors.SearchForeground},
TelescopeNormal {bg = colors.BufferBackground},
TelescopePromptNormal {bg = colors.BufferBackground},
--
-- Neovim
Added {fg = colors.StringForeground},
Changed {gui = "italic,underline"},
Character {fg = colors.StringForeground},
ColorColumn {bg = colors.ColorColumnBackground},
Comment {fg = colors.CommentForeground},
Conceal {bg = colors.ConcealBackground, fg = colors.ConcealForeground},
Conditional {fg = colors.KeywordForeground},
Constant {fg = colors.ConstantForeground},
Cursor {gui = "reverse"},
CursorColumn {
gui = "underline",
fg = colors.HighlightForeground,
bg = colors.HighlightBackground
},
CursorLine {bg = colors.CursorLineBackground},
CursorLineNr {
bg = colors.NrBackground,
fg = colors.CursorLineNrForeground
},
CurSearch {
fg = colors.SearchForeground,
bg = colors.SearchBackground,
gui = "bold,italic,underline"
},
Delimiter {fg = colors.FunctionForeground},
DiagnosticError {CodeError},
DiagnosticHint {CodeHint},
DiagnosticInfo {CodeInfo},
DiagnosticWarn {CodeWarn},
DiagnosticFloatingError {fg = colors.ErrorForeground},
DiagnosticFloatingHint {fg = colors.HintForeground},
DiagnosticFloatingInfo {fg = colors.InfoForeground},
DiagnosticFloatingWarn {fg = colors.WarningForeground},
DiagnosticSignError {
fg = colors.ErrorForeground,
bg = colors.NrBackground
},
DiagnosticSignHint {fg = colors.HintForeground, bg = colors.NrBackground},
DiagnosticSignInfo {fg = colors.InfoForeground, bg = colors.NrBackground},
DiagnosticSignWarn {
fg = colors.WarningForeground,
bg = colors.NrBackground
},
DiagnosticLineNrError {
fg = colors.ErrorForeground,
bg = colors.NrBackground
},
DiagnosticLineNrHint {
fg = colors.HintForeground,
bg = colors.NrBackground
},
DiagnosticLineNrInfo {
fg = colors.InfoForeground,
bg = colors.NrBackground
},
DiagnosticLineNrWarn {
fg = colors.WarningForeground,
bg = colors.NrBackground
},
DiagnosticUnderlineError {
CocErrorHighlight
},
DiagnosticUnderlineHint {
CocHintHighlight
},
DiagnosticUnderlineInfo {
CocInfoHighlight
},
DiagnosticUnderlineWarn {
CocWarnHighlight
},
DiagnosticVirtualTextError {fg = colors.InlayForeground, bg = "NONE"},
DiagnosticVirtualTextWarn {fg = colors.InlayForeground, bg = "NONE"},
DiagnosticVirtualTextInfo {fg = colors.InlayForeground, bg = "NONE"},
DiagnosticVirtualTextHint {fg = colors.InlayForeground, bg = "NONE"},
DiffAdd {bg = "#1e3a1e"},
DiffChange {bg = "#2e2e1e"},
DiffDelete {bg = "#3a1e1e"},
DiffText {bg = "#5e4a1e"},
Directory {fg = colors.FileForeground},
EndOfBuffer {bg = colors.NrBackground},
Error {
gui = "italic",
bg = colors.ErrorBackground,
fg = colors.ErrorForeground
},
ErrorMsg {fg = colors.ErrorForeground},
Exception {fg = colors.KeywordForeground},
FloatBorder {bg = colors.FloatBackground},
FoldColumn {fg = colors.ErrorForeground, bg = colors.NrBackground},
Folded {fg = colors.CommentForeground, bg = colors.ConcealBackground},
Function {fg = colors.FunctionForeground},
Identifier {fg = colors.NormalForeground},
IncSearch {fg = colors.SearchForeground, gui = "bold,italic,underline"},
Keyword {fg = colors.KeywordForeground},
Label {fg = colors.KeywordForeground},
LineNr {bg = colors.NrBackground, fg = colors.LineNrForeground},
LineNrSpecial {bg = colors.NrBackground, fg = colors.SpecialForeground},
LspReferenceRead {
gui = "underline,italic",
guibg = "NONE"
},
LspReferenceText {
gui = "underline,italic",
guibg = "NONE"
},
LspReferenceWrite {
gui = "underline,bold,italic",
guibg = "NONE"
},
LspCodeLens {fg = CocCodeLens.fg},
LspCodeLensSeparator {fg = CocCodeLens.fg},
LspSignatureActiveParameter {gui = "italic", fg = colors.NumberForeground},
MatchParen {
gui = "italic,bold",
bg = "NONE",
fg = colors.MatchParenForeground
},
ModeMsg {fg = colors.StringForeground},
MoreMsg {fg = colors.StringForeground},
NonText {fg = colors.NonTextForeground},
Normal {bg = colors.BufferBackground, fg = colors.NormalForeground},
NormalFloat {bg = colors.FloatBackground, fg = colors.FloatForeground},
NormalNC {bg = colors.BufferBackground, fg = colors.NormalForeground},
Number {fg = colors.NumberForeground},
Operator {fg = colors.OperatorForeground},
Pmenu {bg = colors.FloatBackground, fg = colors.FloatForeground},
PmenuMatch {fg = colors.SearchForeground},
PmenuSbar {bg = lighten(Pmenu.bg, 0.5)},
PmenuSel {bg = colors.PmenuSelBackground},
PmenuThumb {bg = lighten(Pmenu.bg, 2)},
PreProc {fg = colors.PreProcForeground},
Question {fg = colors.StringForeground},
QuickFixLine {
fg = colors.HighlightForeground,
bg = colors.HighlightBackground
},
Removed {fg = colors.ErrorForeground},
Repeat {fg = colors.KeywordForeground},
Search {
fg = colors.SearchForeground,
bg = colors.SearchBackground,
gui = "bold,italic,underline"
},
SignColumn {bg = colors.NrBackground},
Special {fg = colors.SpecialForeground},
SpecialKey {fg = colors.NonTextForeground},
SpellBad {gui = "italic", fg = colors.NormalForeground},
SpellCap {gui = "italic", fg = colors.NormalForeground},
SpellLocal {gui = "italic", fg = colors.NormalForeground},
SpellRare {gui = "italic", fg = colors.NormalForeground},
Statement {fg = colors.KeywordForeground},
StatusLine {bg = colors.StatusBackground},
StatusLineNC {bg = colors.StatusBackgroundNC},
String {fg = colors.StringForeground},
Substitute {fg = colors.SearchForeground, gui = "underline"},
TabLine {bg = lighten(colors.EOBBackground)},
TabLineFill {bg = colors.EOBBackground},
TabLineSel {gui = "bold", bg = lighten(colors.EOBBackground, 2)},
Title {fg = colors.FileForeground},
Todo {
bg = darken(colors.StringForeground, 4),
fg = colors.NormalForeground,
gui = "italic"
},
Type {fg = colors.KeywordForeground},
Underlined {fg = colors.NumberForeground, gui = "underline"},
VertSplit {bg = colors.NrBackground},
Visual {bg = colors.SelectionBackground},
WarningMsg {fg = colors.WarningForeground},
WinSeparator {bg = colors.NrBackground},
--
-- mini.icons
MiniIconsAzure {fg = colors.FunctionForeground},
MiniIconsBlue {fg = primary_colors.blue},
MiniIconsCyan {fg = primary_colors.cyan},
MiniIconsGreen {fg = primary_colors.green},
MiniIconsGrey {fg = primary_colors.light_grey},
MiniIconsOrange {fg = primary_colors.orange},
MiniIconsPurple {fg = primary_colors.purple},
MiniIconsRed {fg = primary_colors.red},
MiniIconsYellow {fg = primary_colors.yellow},
--
-- qf
qfSeparator1 {Comment},
qfSeparator2 {Comment},
--
-- tree-sitter
sym("@attribute") {fg = colors.CommentForeground},
sym("@comment.error") {fg = colors.ErrorForeground},
sym("@comment.warning") {fg = colors.WarningForeground},
sym("@constructor") {fg = colors.FunctionForeground},
sym("@function") {fg = colors.FunctionForeground},
sym("@function.builtin") {fg = colors.FunctionForeground},
sym("@keyword.directive") {fg = colors.PreProcForeground},
sym("@keyword.function") {fg = colors.KeywordForeground},
sym("@keyword.import") {fg = colors.PreProcForeground},
sym("@keyword.operator") {fg = Operator.fg, gui = Operator.gui},
sym("@lsp.type.property.lua") {fg = colors.ConstantForeground},
sym("@module") {fg = colors.NamespaceForeground},
sym("@number") {fg = colors.NumberForeground},
sym("@number.float") {fg = colors.NumberForeground},
sym("@operator") {fg = Operator.fg, gui = Operator.gui},
sym("@operator.special") {fg = Operator.fg, gui = Operator.gui},
sym("@punctuation.bracket") {fg = colors.FunctionForeground},
sym("@punctuation.delimiter") {fg = colors.SpecialForeground},
sym("@punctuation.special") {fg = colors.SpecialForeground},
sym("@type.cpp") {fg = colors.FunctionForeground},
sym("@type.definition") {fg = Constant.fg, gui = ""},
sym("@variable") {fg = colors.NormalForeground},
sym("@variable.member") {fg = colors.ConstantForeground},
sym("@variable.member.cpp") {fg = colors.NormalForeground}
}
end
)
-- return our parsed theme for extension or use else where.
return theme
-- vi:nowrap