darcula.nvim/lua/lush_theme/darcula-solid.lua
2023-12-16 23:51:56 +02:00

284 lines
12 KiB
Lua

-- darcula-solid/init.lua
-- Mantainer: Briones Dos Santos Gabriel <@briones-gabriel>
-- last update: 2021-05-16
--
-- 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
local lush = require("lush")
local hsl = lush.hsl
--------------------------------------------------
-- GUI options
local bf, it, un = "bold", "italic", "underline"
-- Base colors
local c0 = hsl(240, 1, 15)
local c1 = c0.lighten(5)
local c2 = c1.lighten(2)
local c3 = c2.lighten(20).sa(10)
local c4 = c3.lighten(10)
local c5 = c4.lighten(20)
local c6 = c5.lighten(70)
local c7 = c6.lighten(80)
-- Set base colors
local bg = hsl("#2b2b2b") -- base background
local overbg = c1 -- other backgrounds
local subtle = c2 -- out-of-buffer elements
local fg = hsl("#a9b7c6")
local comment = hsl("#808080") -- comments
local folder = hsl(202, 9, 57)
local treebg = hsl(220, 3, 19)
local mid = c2.lighten(10) -- either foreground or background
local faded = fg.darken(45) -- non-important text elements
local pop = c7
-- Color palette
local red = hsl(1, 77, 59)
local orange = hsl("#cc7832")
local yellow = hsl("#ffc66d")
local green = hsl("#6a8759")
local teal = hsl(150, 40, 50)
local cyan = hsl(180, 58, 38)
local blue = hsl("#6897bb")
local purple = hsl("#9876aa")
local magenta = hsl(310, 40, 70)
local white = hsl("#a9b7c6")
local decorator_yellow = hsl("#bbb529")
local html_css_yellow = hsl("#e8bf6a")
local html_css_green = hsl("#a5c261")
local html_css_white = hsl("#bababa")
return lush(function(injected_functions)
local sym = injected_functions.sym
return {
Normal({ fg = fg, bg = bg }),
NormalFloat({ fg = fg, bg = overbg }),
NormalNC({ fg = fg, bg = bg.da(10) }), -- normal text in non-current windows
Comment({ fg = comment }),
Whitespace({ fg = mid }), -- 'listchars'
Conceal({ fg = hsl(0, 0, 25) }),
NonText({ fg = treebg }), -- characters that don't exist in the text
SpecialKey({ Whitespace }), -- Unprintable characters: text displayed differently from what it really is
Cursor({ fg = bg, bg = fg }),
TermCursor({ fg = bg, bg = fg }),
ColorColumn({ bg = overbg }),
CursorColumn({ bg = subtle }),
CursorLine({ CursorColumn }),
MatchParen({ fg = pop, bg = mid }),
LineNr({ fg = faded }),
CursorLineNr({ fg = orange }),
SignColumn({ LineNr }),
VertSplit({ fg = overbg, bg = bg }), -- column separating vertically split windows
Folded({ fg = comment, bg = overbg }),
FoldColumn({ LineNr }),
Pmenu({ bg = overbg }), -- Popup menu normal item
PmenuSel({ bg = mid }), -- selected item
PmenuSbar({ Pmenu }), -- scrollbar
PmenuThumb({ PmenuSel }), -- Thumb of the scrollbar
WildMenu({ Pmenu }), -- current match in 'wildmenu' completion
QuickFixLine({ fg = pop }), -- Current |quickfix| item in the quickfix window
StatusLine({ bg = subtle }),
StatusLineNC({ fg = faded, bg = overbg }),
TabLine({ bg = mid }), -- not active tab page label
TabLineFill({ bg = overbg }), -- where there are no labels
TabLineSel({ bg = faded }), -- active tab page label
Search({ fg = bg, bg = yellow }), -- Last search pattern highlighting (see 'hlsearch')
IncSearch({ Search }), -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
Substitute({ Search }), -- |:substitute| replacement text highlighting
Visual({ bg = c2 }), -- Visual mode selection
VisualNOS({ bg = subtle }), -- Visual mode selection when Vim is "Not Owning the Selection".
ModeMsg({ fg = faded }), -- 'showmode' message (e.g. "-- INSERT -- ")
MsgArea({ Normal }), -- Area for messages and cmdline
MsgSeparator({ fg = orange }), -- Separator for scrolled messages `msgsep` flag of 'display'
MoreMsg({ fg = green }), -- |more-prompt|
Question({ fg = green }), -- |hit-enter| prompt and yes/no questions
ErrorMsg({ fg = red }), -- error messages on the command line
WarningMsg({ fg = red }), -- warning messages
Directory({ fg = blue }), -- directory names (and other special names in listings)
Title({ fg = blue }), -- titles for output from ":set all" ":autocmd" etc.
DiffAdd({ fg = green.da(20) }),
DiffDelete({ fg = red }),
DiffChange({ fg = yellow.da(20) }),
DiffText({ DiffChange, gui = un }),
DiffAdded({ DiffAdd }),
DiffRemoved({ DiffDelete }),
SpellBad({ fg = red, gui = un }),
SpellCap({ fg = magenta, gui = un }),
SpellLocal({ fg = orange, gui = un }),
SpellRare({ fg = yellow, gui = un }),
---- Language Server Protocol highlight groups ---------------------------------
LspReferenceText({ bg = mid }), -- highlighting "text" references
LspReferenceRead({ bg = mid }), -- highlighting "read" references
LspReferenceWrite({ bg = mid }), -- highlighting "write" references
-- base highlight groups. Other LspDiagnostic highlights link to these by default (except Underline)
LspDiagnosticsDefaultError({ fg = red }),
LspDiagnosticsDefaultWarning({ fg = yellow }),
LspDiagnosticsDefaultInformation({ fg = fg }),
LspDiagnosticsDefaultHint({ fg = teal }),
--LspDiagnosticsVirtualTextError { }; -- "Error" diagnostic virtual text
--LspDiagnosticsVirtualTextWarning { }; -- "Warning" diagnostic virtual text
--LspDiagnosticsVirtualTextInformation { }; -- "Information" diagnostic virtual text
--LspDiagnosticsVirtualTextHint { }; -- "Hint" diagnostic virtual text
LspDiagnosticsUnderlineError({ gui = un }), -- underline "Error" diagnostics
LspDiagnosticsUnderlineWarning({ gui = un }), -- underline "Warning" diagnostics
LspDiagnosticsUnderlineInformation({ gui = un }), -- underline "Information" diagnostics
LspDiagnosticsUnderlineHint({ gui = un }), -- underline "Hint" diagnostics
--LspDiagnosticsFloatingError { }; -- color "Error" diagnostic messages in diagnostics float
--LspDiagnosticsFloatingWarning { }; -- color "Warning" diagnostic messages in diagnostics float
--LspDiagnosticsFloatingInformation { }; -- color "Information" diagnostic messages in diagnostics float
--LspDiagnosticsFloatingHint { }; -- color "Hint" diagnostic messages in diagnostics float
--LspDiagnosticsSignError { }; -- "Error" signs in sign column
--LspDiagnosticsSignWarning { }; -- "Warning" signs in sign column
--LspDiagnosticsSignInformation { }; -- "Information" signs in sign column
--LspDiagnosticsSignHint { }; -- "Hint" signs in sign column
---- Standard highlight groups -------------------------------------------------
-- See :help group-name
Constant({ fg = orange }),
Number({ fg = blue }),
Float({ Number }),
Boolean({ Constant }),
Character({ fg = orange }),
String({ fg = green }),
Identifier({ fg = fg }),
Function({ fg = yellow }),
Statement({ fg = orange }), -- (preferred) any statement
Conditional({ Statement }),
Repeat({ Statement }),
Label({ Statement }), -- case, default, etc.
Operator({ fg = fg }),
Keyword({ Statement }), -- any other keyword
Exception({ fg = red }),
PreProc({ fg = decorator_yellow }), -- generic Preprocessor
Include({ PreProc }), -- preprocessor #include
Define({ PreProc }), -- preprocessor #define
Macro({ PreProc }), -- same as Define
PreCondit({ PreProc }), -- preprocessor #if, #else, #endif, etc.
Type({ fg = fg }),
StorageClass({ fg = magenta }), -- static, register, volatile, etc.
Structure({ fg = magenta }), -- struct, union, enum, etc.
Typedef({ Type }),
Special({ fg = orange }), -- (preferred) any special symbol
SpecialChar({ Special }), -- special character in a constant
Tag({ fg = yellow }), -- you can use CTRL-] on this
Delimiter({ Special }), -- character that needs attention
SpecialComment({ Special }), -- special things inside a comment
Debug({ Special }), -- debugging statements
Underlined({ gui = un }),
Bold({ gui = bf }),
Italic({ gui = it }),
Ignore({ fg = faded }), -- left blank, hidden |hl-Ignore|
Error({ fg = red }), -- any erroneous construct
Todo({ gui = bf }), -- anything that needs extra attention
---- TREESITTER ----------------------------------------------------------------
sym("@constant")({ Constant }),
sym("@constant.builtin")({ Constant, gui = it }), -- constant that are built in the language: `nil` in Lua.
sym("@constant.macro")({ Constant, gui = bf }), -- constants that are defined by macros: `NULL` in C.
sym("@number")({ Number }),
sym("@float")({ Float }),
sym("@boolean")({ Boolean }),
sym("@character")({ Character }),
sym("@string")({ String }),
sym("@string.regex")({ Character }),
sym("@string.escape")({ Character }), -- escape characters within a string
sym("@symbol")({ fg = green, gui = it }), -- For identifiers referring to symbols or atoms.
sym("@field")({ fg = purple }),
sym("@property")({ fg = purple }),
sym("@parameter")({ fg = fg }),
sym("@parameter.reference")({ fg = fg }),
sym("@variable")({ fg = white }), -- Any variable name that does not have another highlight
sym("@variable.builtin")({ Constant, gui = it }), -- Variable names that are defined by the languages like `this` or `self`.
sym("@function")({ Function }),
sym("@function.builtin")({ Function }),
sym("@function.macro")({ Function }), -- macro defined fuctions: each `macro_rules` in Rust
sym("@method")({ Function }),
sym("@constructor")({ fg = fg }), -- For constructor: `{}` in Lua and Java constructors.
sym("@keyword.function")({ Keyword }),
sym("@keyword")({ Keyword }),
sym("@conditional")({ Conditional }),
sym("@repeat")({ Repeat }),
sym("@label")({ Label }),
sym("@operator")({ Operator }),
sym("@exception")({ Exception }),
sym("@namespace")({ PreProc }), -- identifiers referring to modules and namespaces.
sym("@annotation")({ PreProc }), -- C++/Dart attributes annotations that can be attached to the code to denote some kind of meta information
sym("@attribute")({ PreProc }), -- Unstable
sym("@include")({ PreProc }), -- includes: `#include` in C `use` or `extern crate` in Rust or `require` in Lua.
sym("@type")({ fg = white }),
sym("@type.builtin")({ Type, gui = it }),
sym("@punctuation.delimiter")({ Delimiter }), -- delimiters ie: `.`
sym("@punctuation.bracket")({ fg = fg }), -- brackets and parens.
sym("@punctuation.special")({ Delimiter }), -- special punctutation that does not fall in the catagories before.
sym("@comment")({ fg = comment }),
sym("@tag")({ Tag }), -- Tags like html tag names.
sym("@tag.delimiter")({ Special }), -- Tag delimiter like < > /
sym("@text")({ fg = fg }),
sym("@text.emphasis")({ fg = fg, gui = it }),
sym("@text.underline")({ fg = fg, gui = un }),
sym("@text.strike")({ fg = comment, gui = un }),
sym("@text.strong")({ fg = fg, gui = bf }),
sym("@text.title")({ fg = orange }), -- Text that is part of a title
sym("@text.literal")({ String }), -- Literal text
sym("@text.uri")({ fg = green, gui = it }), -- Any URI like a link or email
sym("@error")({ fg = red }), -- syntax/parser errors.
sym("@lsp.type.class.typescript")({ fg = white }),
-- Other stuff
HelpHyperTextJump({ fg = yellow }),
markdownLinkText({ fg = fg }),
-- NvimTree
NvimTreeNormal({ bg = treebg, fg = fg }),
NvimTreeIndentMarker({ fg = hsl(204, 3, 32) }),
NvimTreeRootFolder({ fg = folder }),
NvimTreeFolderIcon({ fg = folder }),
}
end)