2021-07-05 03:14:01 +02:00
local lush = require " lush "
2021-07-02 17:30:42 +02:00
local hsl = lush.hsl
local theme = lush ( function ( )
2021-07-05 03:14:01 +02:00
local c = {
bg = hsl " #212121 " ,
bg1 = hsl " #2a2a2a " ,
-- bg2 = hsl("#3a3a3a"),
bg2 = hsl " #383d45 " ,
white = hsl " #c8c9d1 " ,
gray = hsl " #858585 " ,
light_gray = hsl " #c8c9c1 " ,
error_red = hsl " #F44747 " ,
warning_orange = hsl " #ff8800 " ,
info_yellow = hsl " #ffcc66 " ,
hint_blue = hsl " #4fc1ff " ,
red = hsl " #b04b57 " ,
blue = hsl " #5486c0 " ,
gray_blue = hsl " #66899d " ,
-- yellow = hsl("#ffcb6b"),
yellow = hsl " #eeba5a " ,
-- orange = hsl("#c98a75"),
orange = hsl " #c6735a " ,
green = hsl " #87b379 " ,
light_green = hsl " #b2d77c " ,
-- aqua = hsl("#46b1d0"),
aqua = hsl " #65a7c5 " ,
purple = hsl " #bf83c1 " ,
pale_purple = hsl " #7199ee " ,
sign_add = hsl " #587C0C " ,
sign_change = hsl " #0C7D9D " ,
sign_delete = hsl " #94151B " ,
test = hsl " #ff00ff " ,
}
return {
Normal { bg = c.bg , fg = c.white , gui = " NONE " } , -- used for the columns set with 'colorcolumn'
SignColumn { Normal } ,
ModeMsg { Normal } ,
MsgArea { Normal } ,
MsgSeparator { Normal } ,
SpellBad { bg = " NONE " , fg = c.white , gui = " underline " , sp = c.red } ,
SpellCap { bg = " NONE " , fg = c.white , gui = " underline " , sp = c.yellow } ,
SpellLocal { bg = " NONE " , fg = c.white , gui = " underline " , sp = c.green } ,
SpellRare { bg = " NONE " , fg = c.white , gui = " underline " , sp = c.blue } ,
NormalNC { Normal } ,
Pmenu { bg = c.bg2 , fg = c.white , gui = " NONE " } ,
PmenuSel { bg = c.gray_blue , fg = c.bg1 . da ( 5 ) , gui = " NONE " } ,
WildMenu { PmenuSel } , -- Non Defaults
CursorLineNr { bg = " NONE " , fg = c.light_gray , gui = " bold " } ,
Comment { bg = " NONE " , fg = c.gray , gui = " italic " } , -- any comment
Folded { bg = c.bg1 , fg = c.gray , gui = " NONE " } ,
FoldColumn { Normal , fg = c.gray , gui = " NONE " } ,
LineNr { bg = " NONE " , fg = c.gray , gui = " NONE " } ,
FloatBorder { bg = c.bg1 , fg = c.gray , gui = " NONE " } ,
Whitespace { bg = " NONE " , fg = c.gray . da ( 35 ) , gui = " NONE " } ,
VertSplit { bg = " NONE " , fg = c.bg2 , gui = " NONE " } ,
CursorLine { bg = c.bg1 , fg = " NONE " , gui = " NONE " } ,
CursorColumn { CursorLine } ,
ColorColumn { CursorLine } ,
NormalFloat { bg = c.bg2 . da ( 30 ) , fg = " NONE " , gui = " NONE " } ,
Visual { bg = c.bg2 . da ( 25 ) , fg = " NONE " , gui = " NONE " } ,
VisualNOS { Visual } ,
WarningMsg { bg = " NONE " , fg = c.red , gui = " NONE " } ,
DiffText { bg = " NONE " , fg = " NONE " , gui = " NONE " } ,
DiffAdd { bg = c.sign_add , fg = " NONE " , gui = " NONE " } ,
DiffChange { bg = c.sign_change , fg = " NONE " , gui = " NONE " } ,
DiffDelete { bg = c.sign_delete , fg = " NONE " , gui = " NONE " } ,
QuickFixLine { CursorLine } ,
PmenuSbar { bg = c.bg2 . li ( 15 ) , fg = " NONE " , gui = " NONE " } ,
PmenuThumb { bg = c.white , fg = " NONE " , gui = " NONE " } ,
MatchParen { CursorLine , fg = " NONE " , gui = " NONE " } ,
Cursor { fg = " NONE " , bg = " NONE " , gui = " reverse " } ,
lCursor { Cursor } ,
CursorIM { Cursor } ,
TermCursor { Cursor } ,
TermCursorNC { Cursor } ,
Conceal { bg = " NONE " , fg = c.blue , gui = " NONE " } ,
Directory { bg = " NONE " , fg = c.blue , gui = " NONE " } ,
SpecialKey { bg = " NONE " , fg = c.blue , gui = " bold " } ,
Title { bg = " NONE " , fg = c.blue , gui = " bold " } ,
ErrorMsg { bg = " NONE " , fg = c.error_red , gui = " NONE " } ,
Search { bg = c.gray_blue , fg = c.white } ,
IncSearch { Search } ,
Substitute { Search } ,
MoreMsg { bg = " NONE " , fg = c.aqua , gui = " NONE " } ,
Question { MoreMsg } ,
EndOfBuffer { bg = " NONE " , fg = c.bg , gui = " NONE " } ,
NonText { EndOfBuffer } ,
String { fg = c.green } ,
Character { fg = c.light_green } ,
Constant { fg = c.orange } ,
Number { fg = c.red } ,
Boolean { fg = c.red } ,
Float { fg = c.red } ,
Identifier { fg = c.white } ,
Function { fg = c.yellow } ,
Operator { fg = c.gray_blue } ,
Type { fg = c.purple } ,
StorageClass { Type } ,
Structure { Type } ,
Typedef { Type } ,
Keyword { fg = c.blue } ,
Statement { Keyword } ,
Conditional { Keyword } ,
Repeat { Keyword } ,
Label { Keyword } ,
Exception { Keyword } ,
Include { Keyword } ,
PreProc { fg = c.aqua } ,
Define { PreProc } ,
Macro { PreProc } ,
PreCondit { PreProc } ,
Special { fg = c.orange } ,
SpecialChar { Character } ,
Tag { fg = c.pale_purple } ,
Debug { fg = c.red } ,
Delimiter { fg = c.white . da ( 25 ) } ,
SpecialComment { fg = c.gray } ,
Underlined { fg = " NONE " , gui = " underline " } ,
Bold { fg = " NONE " , gui = " bold " } ,
Italic { fg = " NONE " , gui = " italic " } ,
-- Todo
-- ("Ignore", below, may be invisible...)
Ignore { fg = c.white } ,
Todo { bg = " NONE " , fg = c.red , gui = " bold " } ,
Error { fg = c.error_red } ,
-- Treesitter
TSComment { Comment } , -- comment blocks.
luaTSConstructor { bg = " NONE " , fg = c.white . da ( 25 ) } , -- override Lua curly braces
TSAnnotation { bg = " NONE " , fg = c.aqua } , -- For C++/Dart attributes, annotations that can be attached to the code to denote some kind of meta information.
TSAttribute { bg = " NONE " , fg = c.aqua } , -- (unstable) TODO: docs
TSConstructor { Type } , -- For constructor calls and definitions: `{ }` in Lua, and Java constructors.
TSType { Type } , -- types.
TSTypeBuiltin { Type } , -- builtin types.
TSConditional { Conditional } , -- keywords related to conditionnals.
TSException { Exception } , -- exception related keywords.
TSInclude { Include } , -- includes: `#include` in C, `use` or `extern crate` in Rust, or `require` in Lua.
TSKeyword { Keyword } , -- keywords that don't fall in previous categories.
TSKeywordFunction { Keyword } , -- keywords used to define a fuction.
TSLabel { Label } , -- labels: `label:` in C and `:label:` in Lua.
TSNamespace { bg = " NONE " , fg = c.blue } , -- For identifiers referring to modules and namespaces.
TSRepeat { Repeat } , -- keywords related to loops.
TSConstant { Constant } , -- constants
TSConstBuiltin { Constant } , -- constant that are built in the language: `nil` in Lua.
TSFloat { Float } , -- floats.
TSNumber { Number } , -- all numbers
TSBoolean { Boolean } , -- booleans.
TSCharacter { Character } , -- characters.
TSError { bg = " NONE " , fg = " NONE " } , -- For syntax/parser errors.
TSFunction { Function } , -- function (calls and definitions).
TSFuncBuiltin { Function } , -- builtin functions: `table.insert` in Lua.
TSMethod { Function } , -- method calls and definitions.
TSConstMacro { Macro } , -- constants that are defined by macros: `NULL` in C.
TSFuncMacro { Macro } , -- macro defined fuctions (calls and definitions): each `macro_rules` in Rust.
TSVariableBuiltin { bg = " NONE " , fg = c.aqua } , -- Variable names that are defined by the languages, like `this` or `self`.
TSProperty { fg = c.aqua } ,
TSOperator { Operator } , -- any operator: `+`, but also `->` and `*` in C.
TSVariable { bg = " NONE " , fg = c.white } , -- Any variable name that does not have another highlight.
TSField { bg = " NONE " , fg = c.white } , -- For fields.
TSParameter { TSField } , -- parameters of a function.
TSParameterReference { TSParameter } , -- references to parameters of a function.
TSSymbol { Identifier } , -- identifiers referring to symbols or atoms.
TSText { fg = c.white } , -- strings considered text in a markup language.
TSPunctDelimiter { Delimiter } , -- delimiters ie: `.`
TSTagDelimiter { Delimiter } , -- Tag delimiter like `<` `>` `/`
TSPunctBracket { Delimiter } , -- brackets and parens.
TSPunctSpecial { Delimiter } , -- special punctutation that does not fall in the catagories before.
TSString { String } , -- strings.
TSStringRegex { TSString } , -- regexes.
TSStringEscape { Character } , -- escape characters within a string.
TSWarning { Todo } , -- Variable names that are defined by the languages, like `this` or `self`.
TSTag { Tag } , -- Tags like html tag names.
TSEmphasis { gui = " italic " } , -- text to be represented with emphasis.
TSUnderline { gui = " underline " } , -- text to be represented with an underline.
TSStrike { gui = " strikethrough " } , -- strikethrough text.
TSTitle { Title } , -- Text that is part of a title.
TSLiteral { String } , -- Literal text.
TSURI { fg = c.aqua } , -- Any URI like a link or email.
-- TSNone { }, -- TODO: docs
-- These groups are for the native LSP client. Some other LSP clients may
-- use these groups, or use their own. Consult your LSP client's
-- documentation.
LspDiagnosticsDefaultError { bg = " NONE " , fg = c.error_red , gui = " NONE " } ,
LspDiagnosticsDefaultWarning { bg = " NONE " , fg = c.warning_orange , gui = " NONE " } ,
LspDiagnosticsDefaultInformation { bg = " NONE " , fg = c.info_yellow , gui = " NONE " } ,
LspDiagnosticsDefaultHint { bg = " NONE " , fg = c.hint_blue , gui = " NONE " } ,
LspDiagnosticsVirtualTextError { LspDiagnosticsDefaultError } ,
LspDiagnosticsVirtualTextWarning { LspDiagnosticsDefaultWarning } ,
LspDiagnosticsVirtualTextInformation { LspDiagnosticsDefaultInformation } ,
LspDiagnosticsVirtualTextHint { LspDiagnosticsDefaultHint } ,
LspDiagnosticsFloatingError { fg = c.error_red , gui = " NONE " } ,
LspDiagnosticsFloatingWarning { fg = c.warning_orange , gui = " NONE " } ,
LspDiagnosticsFloatingInformation { fg = c.info_yellow , gui = " NONE " } ,
LspDiagnosticsFloatingHint { fg = c.hint_blue , gui = " NONE " } ,
LspDiagnosticsSignError { fg = c.error_red , gui = " NONE " } ,
LspDiagnosticsSignWarning { fg = c.warning_orange , gui = " NONE " } ,
LspDiagnosticsSignInformation { fg = c.info_yellow , gui = " NONE " } ,
LspDiagnosticsSignHint { fg = c.hint_blue , gui = " NONE " } , -- Tree-Sitter
LspDiagnosticsError { LspDiagnosticsSignError } ,
LspDiagnosticsWarning { LspDiagnosticsSignWarning } ,
LspDiagnosticsInformation { LspDiagnosticsSignInformation } ,
LspDiagnosticsHint { LspDiagnosticsSignHint } ,
-- LspReferenceText {bg = c.bg1, fg = "NONE", gui = "underline"},
-- LspReferenceRead {bg = c.bg1, fg = "NONE", gui = "underline"},
-- LspReferenceWrite {bg = c.bg1, fg = "NONE", gui = "underline"},
LspDiagnosticsUnderlineError { fg = " NONE " , gui = " underline " , sp = c.red } ,
LspDiagnosticsUnderlineWarning { fg = " NONE " , gui = " underline " , sp = c.yellow } ,
LspDiagnosticsUnderlineInformation { fg = " NONE " , gui = " underline " , sp = c.blue } ,
LspDiagnosticsUnderlineHint { fg = " NONE " , gui = " underline " , sp = c.green } ,
-- gitsigns.nvim
SignAdd { fg = c.sign_add } ,
SignChange { fg = c.sign_change } ,
SignDelete { fg = c.sign_delete } , -- Any URI like a link or email.
GitSignsAdd { fg = c.sign_add } ,
GitSignsChange { fg = c.sign_change } ,
GitSignsDelete { fg = c.sign_delete } ,
-- telescope.nvim
TelescopeSelection { bg = " NONE " , fg = c.aqua } ,
TelescopeMatching { bg = " NONE " , fg = c.red , gui = " bold " } ,
TelescopeBorder { bg = c.bg1 , fg = c.gray } , -- nvim-tree.lua
-- Nvimtree
NvimTreeFolderIcon { fg = c.blue } ,
NvimTreeIndentMarker { fg = c.gray } ,
NvimTreeNormal { fg = c.white . da ( 10 ) , bg = c.bg1 } ,
NvimTreeFolderName { fg = c.blue } ,
NvimTreeOpenedFolderName { fg = c.aqua . da ( 10 ) , gui = " italic " } ,
NvimTreeOpenedFile { NvimTreeOpenedFolderName } ,
NvimTreeRootFolder { fg = c.blue . da ( 20 ) } ,
NvimTreeExecFile { fg = c.green } ,
NvimTreeImageFile { fg = c.purple } ,
NvimTreeSpecialFile { fg = c.aqua } ,
NvimTreeGitStaged { fg = c.sign_add } ,
NvimTreeGitNew { fg = c.sign_add } ,
NvimTreeGitDirty { fg = c.sign_add } ,
NvimTreeGitRenamed { fg = c.sign_change } ,
NvimTreeGitMerge { fg = c.sign_change } ,
NvimTreeGitDelete { fg = c.sign_delete } ,
NvimTreeVertSplit { fg = c.bg1 , bg = c.bg1 } ,
-- BarBar
TabLine { bg = c.bg1 , fg = c.white , gui = " NONE " } ,
TabLineFill { bg = c.bg1 , fg = c.white , gui = " NONE " } ,
TabLineSel { bg = c.blue , fg = c.bg1 , gui = " NONE " } ,
BufferCurrent { fg = c.fg , bg = c.bg } ,
BufferCurrentIndex { fg = c.aqua , bg = c.bg } ,
BufferCurrentMod { fg = c.info_yellow , bg = c.bg } ,
BufferCurrentSign { fg = c.aqua , bg = c.bg } ,
BufferCurrentTarget { fg = c.red , bg = c.bg , gui = " bold " } ,
BufferVisible { fg = c.fg , bg = c.bg } ,
BufferVisibleIndex { fg = c.fg , bg = c.bg } ,
BufferVisibleMod { fg = c.info_yellow , bg = c.bg } ,
BufferVisibleSign { fg = c.info_yellow , bg = c.bg } ,
BufferVisibleTarget { fg = c.red , bg = c.bg , gui = " bold " } ,
BufferInactive { fg = c.gray , bg = c.bg1 } ,
BufferInactiveIndex { fg = c.gray , bg = c.bg1 } ,
BufferInactiveMod { fg = c.info_yellow , bg = c.bg1 } ,
BufferInactiveSign { fg = c.gray , bg = c.bg1 } ,
BufferInactiveTarget { fg = c.red , bg = c.bg1 } ,
-- some fix for html related stuff
htmlH1 { Title } , -- markdown stuff
mkdLink { fg = c.aqua , gui = " underline " } ,
mkdLineBreak { bg = " NONE " , fg = " NONE " , gui = " NONE " } ,
mkdHeading { fg = c.white } ,
mkdInlineURL { mkdLink } ,
mkdUnderline { fg = c.gray } ,
markdownUrl { mkdLink } ,
markdownCode { fg = c.orange , bg = " NONE " } ,
markdownLinkTextDelimiter { Delimiter } ,
markdownLinkDelimiter { Delimiter } ,
markdownIdDelimiter { Delimiter } ,
markdownLinkText { fg = c.aqua } ,
markdownItalic { fg = " NONE " , gui = " italic " } , -- flutter-tools.nvim
FlutterWidgetGuides { fg = c.gray . li ( 10 ) } , -- statusline
StatusLine { bg = c.bg1 , fg = c.white } , -- status line of current window
StatusLineNC { bg = c.bg1 , fg = c.light_gray } , -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window.
StatusLineSeparator { bg = c.bg1 , fg = " NONE " } ,
StatusLineGit { bg = c.bg1 , fg = c.orange } ,
StatusLineGitAdd { bg = c.bg1 , fg = c.green } ,
StatusLineGitChange { bg = c.bg1 , fg = c.blue } ,
StatusLineGitDelete { bg = c.bg1 , fg = c.red } ,
StatusLineLspDiagnosticsError { bg = c.bg1 , fg = c.error_red , gui = " NONE " } ,
StatusLineLspDiagnosticsWarning { bg = c.bg1 , fg = c.warning_orange , gui = " NONE " } ,
StatusLineLspDiagnosticsInformation { bg = c.bg1 , fg = c.info_yellow , gui = " NONE " } ,
StatusLineLspDiagnosticsHint { bg = c.bg1 , fg = c.hint_blue , gui = " NONE " } ,
StatusLineTreeSitter { bg = c.bg1 , fg = c.green } ,
-- StatusLineMode {bg = c.gray, fg = c.bg, gui = "bold"},
-- StatusLineDeco {bg = c.bg2, fg = c.yellow},
-- StatusLineLCol {bg = c.bg2, fg = c.white},
-- StatusLineLColAlt {bg = c.bg1, fg = c.white},
-- StatusLineFT {bg = c.bg2, fg = c.white},
-- StatusLineFTAlt {bg = c.bg2, fg = c.white},
-- StatusLineGitAlt {bg = c.gray, fg = c.bg},
-- StatusLineLSP {bg = c.bg1, fg = c.gray.li(25)},
-- StatusLineFileName {bg = c.bg1, fg = c.white, gui = "bold"},
-- lsp-trouble.nvim
LspTroubleIndent { fg = c.gray . li ( 10 ) } , -- tabline stuff
-- tabline diagnostic
TabLineError { LspDiagnosticsSignError } ,
TabLineWarning { LspDiagnosticsSignWarning } ,
TabLineHint { LspDiagnosticsSignHint } ,
TabLineInformation { LspDiagnosticsSignInformation } , -- which-key.nvim
WhichKey { fg = c.purple } , -- nvim-compe
WhichKeySeperator { fg = c.green } , -- nvim-compe
WhichKeyGroup { fg = c.blue } , -- nvim-compe
WhichKeyDesc { fg = c.aqua } , -- nvim-compe
WhichKeyFloat { bg = c.bg1 } , -- nvim-compe
CompeDocumentation { Pmenu , fg = " NONE " } , -- diffview
DiffviewNormal { NvimTreeNormal } ,
DiffviewStatusAdded { SignAdd } ,
DiffviewStatusModified { SignChange } ,
DiffviewStatusRenamed { SignChange } ,
DiffviewStatusDeleted { SignDelete } ,
DiffviewFilePanelInsertion { SignAdd } ,
DiffviewFilePanelDeletion { SignDelete } ,
DiffviewVertSplit { fg = c.gray , bg = c.bg } ,
DashboardHeader { fg = c.blue } ,
DashboardCenter { fg = c.purple } ,
DashboardFooter { fg = c.aqua } ,
IndentBlanklineContextChar { fg = c.gray . da ( 20 ) } ,
CodiVirtualText { fg = c.hint_blue } ,
}
2021-07-02 17:30:42 +02:00
end )
-- return our parsed theme for extension or use else where.
return theme
-- vi:nowrap