-- -- 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.EOBBackground}, 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}, -- -- mini.statusline MiniStatuslineDevinfo { bg = lighten(primary_colors.black, 1.3) }, MiniStatuslineFileinfo { bg = lighten(primary_colors.black, 1.3) }, MiniStatuslineFilename { bg = colors.StatusBackground }, MiniStatuslineModeNormal { fg = lighten(primary_colors.white, 1), bg = lighten(primary_colors.black, 2.2), gui = "bold" }, MiniStatuslineModeInsert { bg = darken(primary_colors.green, 2), fg = lighten(primary_colors.white, 1), gui = "bold" }, MiniStatuslineModeVisual { bg = darken(primary_colors.blue, 2), fg = lighten(primary_colors.white, 1), gui = "bold" }, MiniStatuslineModeReplace { bg = darken(primary_colors.red, 3), fg = lighten(primary_colors.white, 1), gui = "bold" }, MiniStatuslineModeCommand { bg = darken(primary_colors.blue, 3.5), fg = lighten(primary_colors.white, 1), gui = "bold" }, MiniStatuslineModeOther { MiniStatuslineModeCommand }, -- -- 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