dotfiles/nvim/lua/lush_theme/fds-theme.lua

398 lines
14 KiB
Lua

-- CREDITS: pwntester/nautilus.nvim
local lush = require("lush")
local hsl = lush.hsluv
--[[
base00 - Default Background
base01 - Lighter Background (Used for status bars)
base02 - Selection Background
base03 - Comments, Invisibles, Line Highlighting
base04 - Dark Foreground (Used for status bars)
base05 - Default Foreground, Caret, Delimiters, Operators
base06 - Light Foreground (Not often used)
base07 - Light Background (Not often used)
base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url
base0A - Classes, Markup Bold, Search Text Background
base0B - Strings, Inherited Class, Markup Code, Diff Inserted
base0C - Support, Regular Expressions, Escape Characters, Markup Quotes
base0D - Functions, Methods, Attribute IDs, Headings
base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed
base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
]]
--
local base00 = hsl("#2b221f")
local base01 = hsl("#412c26")
local base02 = hsl("#5c362c")
local base03 = hsl("#a45b43")
local base04 = hsl("#e1bcb2")
local base05 = hsl("#f5ecea")
local base06 = hsl("#fefefe")
local base07 = hsl("#eb8a65")
local base08 = hsl("#d03e68")
local base09 = hsl("#df937a")
local base0A = hsl("#afa644")
local base0B = hsl("#85b26e")
local base0C = hsl("#eb914a")
local base0D = hsl("#c67f62")
local base0E = hsl("#8b7ab9")
local base0F = hsl("#7f3F83")
--[[
Define additional colors if defined in the theme. Fallback to base00 - base07
if not defined.
]]
vim.g.terminal_color_0 = base00.hex
vim.g.terminal_color_1 = base08.hex
vim.g.terminal_color_2 = base0B.hex
vim.g.terminal_color_3 = base0A.hex
vim.g.terminal_color_4 = base0D.hex
vim.g.terminal_color_5 = base0E.hex
vim.g.terminal_color_6 = base0C.hex
vim.g.terminal_color_7 = base05.hex
vim.g.terminal_color_8 = base03.hex
vim.g.terminal_color_9 = base08.hex
vim.g.terminal_color_10 = base0B.hex
vim.g.terminal_color_11 = base0A.hex
vim.g.terminal_color_12 = base0D.hex
vim.g.terminal_color_13 = base0E.hex
vim.g.terminal_color_14 = base0C.hex
vim.g.terminal_color_15 = base07.hex
vim.g.terminal_color_background = base00.hex
vim.g.terminal_color_foreground = base0E.hex
return lush(function()
return {
Normal({ fg = base05, bg = base00 }),
NormalFloat({ fg = Normal.fg.saturate(15).lighten(5), bg = Normal.bg.saturate(15).lighten(5) }),
Bold({ gui = "bold" }),
Debug({ fg = base08 }),
Directory({ fg = base0D }),
Error({ fg = base01, bg = base08 }),
ErrorMsg({ fg = base08 }),
Exception({ fg = base08 }),
FoldColumn({ fg = base03 }),
Folded({ fg = base03, bg = base01 }),
Italic({ gui = "italic" }),
Macro({ fg = base08 }),
ModeMsg({ fg = base0B }),
MoreMsg({ fg = base0B }),
Question({ fg = base0D }),
Search({ fg = base00, bg = base04 }),
IncSearch({ fg = base00, bg = base09 }),
Substitute({ fg = base01, bg = base0A }),
SpecialKey({ fg = base03 }),
TooLong({ fg = base08 }),
Underlined({ fg = base08 }),
WarningMsg({ fg = base08 }),
WildMenu({ fg = base08, bg = base0A }),
Title({ fg = base0D }),
Conceal({ fg = base0D }),
Cursor({ fg = base00, bg = base05 }),
NonText({ fg = base03 }),
LineNr({ fg = base02.lighten(25), bg = base00 }),
LineNrNC({ fg = base02.lighten(25), bg = base01 }),
SignColumn({ fg = base01.lighten(40) }),
StatusLine({ fg = base02, bg = base01.darken(60) }),
StatusLineNC({ fg = base02, bg = base01.darken(30) }),
VertSplit({ fg = base02, bg = base00 }),
ColorColumn({ fg = base01.lighten(25), bg = base01.darken(25) }),
CursorLine({ bg = base01.saturate(-5).darken(15) }),
CursorColumn({ CursorLine }),
CursorLineNr({ fg = base0A, CursorColumn }),
Visual({ CursorColumn, fg = base03.lighten(15) }),
VisualNOS({ fg = base08 }),
QuickFixLine({ bg = base00 }),
QFFileName({ fg = base0A }),
QFLineNr({ fg = base04 }),
PMenu({ fg = base05, bg = base01 }),
PMenuSel({ fg = base01, bg = base05 }),
TabLineSel({ fg = base00, bg = base0A }),
TabLine({ fg = base03, bg = base00.darken(15) }),
TabLineFill({ fg = base03, bg = base00.darken(25) }),
EndOfBuffer({ fg = base01.lighten(20), bg = base01.darken(20) }),
-- Standard syntax highlighting
Boolean({ fg = base09 }),
Character({ fg = base08 }),
Comment({ fg = base03, gui = "italic" }),
Conditional({ fg = base0E }),
Constant({ fg = base09 }),
Define({ fg = base0E }),
Delimiter({ fg = base0F.lighten(10) }),
Float({ fg = base09 }),
Function({ fg = base0D }),
Identifier({ fg = base0A }),
Include({ fg = base0D }),
Keyword({ fg = base0E }),
Label({ fg = base0A }),
Number({ fg = base03 }),
Operator({ fg = base03 }),
PreProc({ fg = base0A }),
Repeat({ fg = base0A }),
Special({ fg = base0C }),
SpecialChar({ fg = base0F.lighten(15).saturate(10) }),
Statement({ fg = base08 }),
StorageClass({ fg = base0A }),
String({ fg = base0B }),
Structure({ fg = base0E }),
Tag({ fg = base0A }),
Todo({ fg = base0A, bg = base01 }),
Type({ fg = base0A }),
Typedef({ fg = base0A }),
---
-- Extra definitions
---
-- Help
HelpDoc({ fg = base05, bg = base0D, gui = "bold,italic" }),
HelpIgnore({ fg = base0B, gui = "bold,italic" }),
-- C highlighting
cOperator({ fg = base0C }),
cPreCondit({ fg = base0E }),
-- C# highlighting
csClass({ fg = base0A }),
csAttribute({ fg = base0A }),
csModifier({ fg = base0E }),
csType({ fg = base08 }),
csUnspecifiedStatement({ fg = base0D }),
csContextualStatement({ fg = base0E }),
csNewDecleration({ fg = base08 }),
-- CSS highlighting
cssBraces({ fg = base05 }),
cssClassName({ fg = base0E }),
cssColor({ fg = base0C }),
-- Diff highlighting
DiffAdd({ fg = base0B, bg = base0B.darken(80) }),
DiffAdded({ fg = base0B, bg = base0B.darken(80) }),
DiffNewFile({ fg = base0B, bg = base0B.darken(80) }),
DiffDelete({ fg = base08, bg = base08.darken(80) }),
DiffRemoved({ fg = base08, bg = base08.darken(80) }),
DiffChange({ fg = base03, bg = base03.darken(60) }),
DiffFile({ fg = base03, bg = base03.darken(60) }),
DiffLine({ fg = base03, bg = base03.darken(60) }),
DiffText({ fg = base03, bg = base03.darken(60) }),
-- Git highlighting
gitcommitOverflow({ fg = base08 }),
gitcommitSummary({ fg = base0B }),
gitcommitComment({ fg = base03 }),
gitcommitUntracked({ fg = base03 }),
gitcommitDiscarded({ fg = base03 }),
gitcommitSelected({ fg = base03 }),
gitcommitHeader({ fg = base0E }),
gitcommitSelectedType({ fg = base0D }),
gitcommitUnmergedType({ fg = base0D }),
gitcommitDiscardedType({ fg = base0D }),
gitcommitBranch({ fg = base09, gui = "bold" }),
gitcommitUntrackedFile({ fg = base0A }),
gitcommitUnmergedFile({ fg = base08, gui = "bold" }),
gitcommitDiscardedFile({ fg = base08, gui = "bold" }),
gitcommitSelectedFile({ fg = base0B, gui = "bold" }),
-- GitGutter highlighting
GitGutterAdd({ fg = base0B, bg = base01 }),
GitGutterChange({ fg = base0D, bg = base01 }),
GitGutterDelete({ fg = base08, bg = base01 }),
GitGutterChangeDelete({ fg = base0E, bg = base01 }),
-- HTML highlighting
htmlBold({ fg = base0A }),
htmlItalic({ fg = base0E }),
htmlEndTag({ fg = base05 }),
htmlTag({ fg = base05 }),
-- JavaScript highlighting
javaScript({ fg = base05 }),
javaScriptBraces({ fg = base05 }),
javaScriptNumber({ fg = base09 }),
-- pangloss/vim-javascript highlighting
jsOperator({ fg = base0D }),
jsStatement({ fg = base0E }),
jsReturn({ fg = base0E }),
jsThis({ fg = base08 }),
jsClassDefinition({ fg = base0A }),
jsFunction({ fg = base0E }),
jsFuncName({ fg = base0D }),
jsFuncCall({ fg = base0D }),
jsClassFuncName({ fg = base0D }),
jsClassMethodType({ fg = base0E }),
jsRegexpString({ fg = base0C }),
jsGlobalObjects({ fg = base0A }),
jsGlobalNodeObjects({ fg = base0A }),
jsExceptions({ fg = base0A }),
jsBuiltins({ fg = base0A }),
-- Mail highlighting
mailQuoted1({ fg = base0A }),
mailQuoted2({ fg = base0B }),
mailQuoted3({ fg = base0E }),
mailQuoted4({ fg = base0C }),
mailQuoted5({ fg = base0D }),
mailQuoted6({ fg = base0A }),
mailURL({ fg = base0D }),
mailEmail({ fg = base0D }),
-- Markdown highlighting
markdownh1({ fg = base0D, gui = "bold" }),
markdownh2({ fg = base0D, gui = "bold" }),
markdownh3({ fg = base0D, gui = "bold" }),
markdownh4({ fg = base0D, gui = "bold" }),
markdownh5({ fg = base0D, gui = "bold" }),
markdownh6({ fg = base0A, gui = "bold" }),
markdownRule({ fg = markdownh2.bg, gui = "bold" }),
markdownItalic({ fg = base05, gui = "italic" }),
markdownBold({ fg = base05, gui = "bold" }),
markdownBoldItalic({ fg = base05, gui = "bold,italic" }),
markdownCodeDelimiter({ fg = base0B, gui = "bold" }),
markdownCode({ fg = base07, bg = base00 }),
markdownCodeBlock({ fg = base0B }),
markdownFootnoteDefinition({ fg = base05, gui = "italic" }),
markdownListMarker({ fg = base05, gui = "bold" }),
markdownLineBreak({ fg = base08, gui = "underline" }),
markdownError({ fg = base05, bg = base00 }),
markdownHeadingDelimiter({ fg = base0D }),
markdownUrl({ fg = base09 }),
markdownFootnote({ fg = base0E, gui = "italic" }),
markdownBlockquote({ fg = base0C, gui = "bold" }),
markdownLinkText({ fg = base08, gui = "italic" }),
-- NERDTree highlighting
NERDTreeDirSlash({ fg = base0D }),
NERDTreeExecFile({ fg = base05 }),
-- PHP highlighting
phpMemberSelector({ fg = base05 }),
phpComparison({ fg = base05 }),
phpParent({ fg = base05 }),
phpMethodsVar({ fg = base0C }),
-- Python highlighting
pythonOperator({ fg = base0E }),
pythonRepeat({ fg = base0E }),
pythonInclude({ fg = base0E }),
pythonStatement({ fg = base0E }),
-- Ruby highlighting
rubyAttribute({ fg = base0D }),
rubyConstant({ fg = base0A }),
rubyInterpolationDelimiter({ fg = base0F }),
rubyRegexp({ fg = base0C }),
rubySymbol({ fg = base0B }),
rubyStringDelimiter({ fg = base0B }),
-- SASS highlighting
sassidChar({ fg = base08 }),
sassClassChar({ fg = base09 }),
sassInclude({ fg = base0E }),
sassMixing({ fg = base0E }),
sassMixinName({ fg = base0D }),
-- Spelling highlighting
SpellBad({ gui = "undercurl" }), --, base08)
SpellLocal({ gui = "undercurl" }), --, base0C)
SpellCap({ gui = "undercurl" }), --, base0D)
SpellRare({ gui = "undercurl" }), --, base0E)
-- Startify highlighting
StartifyBracket({ fg = base03 }),
StartifyFile({ fg = base07 }),
StartifyFooter({ fg = base03 }),
StartifyHeader({ fg = base0B }),
StartifyNumber({ fg = base09 }),
StartifyPath({ fg = base03 }),
StartifySection({ fg = base0E }),
StartifySelect({ fg = base0C }),
StartifySlash({ fg = base03 }),
StartifySpecial({ fg = base03 }),
-- Java highlighting
javaOperator({ fg = base0D }),
-- Telescope highlighting
TelescopeNormal({ fg = base05, bg = base01 }),
TelescopeBorder({ fg = base00, bg = base01 }),
TelescopePromptPrefix({ fg = base0A, bg = base01 }),
TelescopeMatching({ fg = base0D, bg = base01 }),
TelescopeSelection({ fg = base0A, bg = base01 }),
TelescopeSelectionCaret({ fg = base0A, bg = base01 }),
--LSP highlighting
LspDiagnosticsDefaultError({ fg = base08 }),
LspDiagnosticsDefaultWarning({ fg = base09 }),
LspDiagnosticsDefaultHint({ fg = base0A }),
LspDiagnosticsDefaultInformation({ fg = base0B }),
-- XML highlighting
xmlTagName({ fg = base0D }),
xmlCdatastart({ fg = base0A }),
xmlEndTag({ fg = xmlTagName.bg }),
xmlCdataCdata({ fg = xmlCdatastart.bg }),
-- MatchParen
MatchParen({ fg = base07, bg = base08 }),
-- CodeQL
CodeqlAstFocus({ fg = base00, bg = base03 }),
-- TreeSitter
TSError({ fg = Error.bg, gui = "bold" }),
TSPunctDelimiter({ fg = base05 }),
TSPunctBracket({ fg = base05 }),
TSConstant({ fg = Constant.fg }),
TSConstBuiltin({ fg = Constant.fg }),
TSConstMacro({ fg = Constant.fg }),
TSString({ fg = String.fg }),
TSStringRegex({ fg = base03 }),
TSStringEscape({ fg = base03 }),
TSCharacter({ fg = Character.fg }),
TSNumber({ fg = Number.fg }),
TSBoolean({ fg = Boolean.fg }),
TSFloat({ fg = Number.fg }),
TSFunction({ fg = Function.fg }),
TSFuncBuiltin({ fg = Function.fg }),
TSFuncMacro({ fg = Function.fg }),
TSParameter({ fg = base0D }),
TSConstructor({ fg = base0E }),
TSKeywordFunction({ fg = base0E }),
TSLiteral({ fg = base04, gui = "bold" }),
TSVariable({ fg = base03.lighten(25) }),
TSVariableBuiltin({ fg = base0E }),
TSParameterReference({ fg = TSParameter.fg }),
TSMethod({ fg = Function.fg }),
TSConditional({ fg = Conditional.fg }),
TSRepeat({ fg = Repeat.fg }),
TSLabel({ fg = Label.fg }),
TSOperator({ fg = Operator.fg }),
TSKeyword({ fg = Keyword.fg }),
TSException({ fg = Exception.fg }),
TSType({ fg = Type.fg }),
TSTypeBuiltin({ fg = Type.fg }),
TSStructure({ fg = Structure.fg }),
TSInclude({ fg = Include.fg }),
TSAnnotation({ fg = base03 }),
TSStrong({ fg = base05, bg = base00, gui = "bold" }),
TSTitle({ fg = base0D }),
-- Diff highlighting
GitSignsAdd({ fg = base0B }),
GitSignsDelete({ fg = base08 }),
GitSignsChange({ fg = base03 }),
-- Indent-Blank-Lines
IndentGuide({ fg = base01, bg = base05 }),
}
end)