darcula.nvim/lua/lush_theme/darcula-solid.lua
2021-05-23 21:11:44 -03:00

282 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 = c0 -- base background
local overbg = c1 -- other backgrounds
local subtle = c2 -- out-of-buffer elements
local fg = hsl(210, 7, 82)
local comment = hsl(0, 0, 54) -- comments
local mid = c2.da(30) -- 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 salmon = hsl(10, 90, 70)
local orange = hsl(27, 61, 50)
local yellow = hsl(37, 100, 71)
local green = hsl(83, 27, 53)
local teal = hsl(150, 40, 50)
local cyan = hsl(180, 58, 38)
local blue = hsl(215, 80, 63).li(10)
local purple = hsl(279, 30, 62)
local magenta = hsl(310, 40, 70)
return lush(function() 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, gui=it };
Conceal { fg=comment };
Whitespace { fg=bg }; -- 'listchars'
NonText { Whitespace }; -- 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 { }; -- highlighting "text" references
-- LspReferenceRead { }; -- highlighting "read" references
-- LspReferenceWrite { }; -- 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 { }; -- underline "Error" diagnostics
--LspDiagnosticsUnderlineWarning { }; -- underline "Warning" diagnostics
--LspDiagnosticsUnderlineInformation { }; -- underline "Information" diagnostics
--LspDiagnosticsUnderlineHint { }; -- 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=orange }; -- 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 ----------------------------------------------------------------
TSConstant { Constant };
TSConstBuiltin { Constant, gui=it }; -- constant that are built in the language: `nil` in Lua.
TSConstMacro { Constant, gui=bf }; -- constants that are defined by macros: `NULL` in C.
TSNumber { Number };
TSFloat { Float };
TSBoolean { Boolean };
TSCharacter { Character };
TSString { String };
TSStringRegex { Character };
TSStringEscape { Character }; -- escape characters within a string
TSSymbol { fg=green, gui=it }; -- For identifiers referring to symbols or atoms.
TSField { fg=purple };
TSProperty { TSField };
TSParameter { fg=fg };
TSParameterReference { TSParameter };
TSVariable { fg=fg }; -- Any variable name that does not have another highlight
TSVariableBuiltin { Constant, gui=it }; -- Variable names that are defined by the languages like `this` or `self`.
TSFunction { Function };
TSFuncBuiltin { TSFunction };
TSFuncMacro { TSFunction }; -- macro defined fuctions: each `macro_rules` in Rust
TSMethod { TSFunction };
TSConstructor { fg=fg }; -- For constructor: `{}` in Lua and Java constructors.
TSKeywordFunction { Keyword };
TSKeyword { Keyword };
TSConditional { Conditional };
TSRepeat { Repeat };
TSLabel { Label };
TSOperator { Operator };
TSException { Exception };
TSNamespace { PreProc }; -- identifiers referring to modules and namespaces.
TSAnnotation { TSNamespace }; -- C++/Dart attributes annotations that can be attached to the code to denote some kind of meta information
--TSAttribute { }; -- Unstable
TSInclude { TSNamespace }; -- includes: `#include` in C `use` or `extern crate` in Rust or `require` in Lua.
TSType { Type };
TSTypeBuiltin { TSType, gui=it };
TSPunctDelimiter { Delimiter }; -- delimiters ie: `.`
TSPunctBracket { fg=yellow }; -- brackets and parens.
TSPunctSpecial { TSPunctDelimiter }; -- special punctutation that does not fall in the catagories before.
TSComment { Comment };
TSTag { Tag }; -- Tags like html tag names.
TSTagDelimiter { Special }; -- Tag delimiter like < > /
TSText { fg=fg };
TSEmphasis { TSText, gui=it };
TSUnderline { TSText, gui=un };
TSStrike { Comment, gui=un };
TSStrong { TSText, gui=bf };
TSTitle { fg=orange }; -- Text that is part of a title
TSLiteral { TSString }; -- Literal text
TSURI { TSSymbol }; -- Any URI like a link or email
TSError { fg=red }; -- syntax/parser errors.
-- Other stuff
HelpHyperTextJump {fg=yellow};
markdownLinkText {fg=fg};
-- NerdTree
NvimTreeRootFolder { fg=hsl(205, 8, 55) };
NvimTreeFolderName { fg=hsl(0, 0, 72) };
}end)