mirror of
https://github.com/LunarVim/LunarVim.git
synced 2024-09-21 02:55:09 +02:00
373 lines
16 KiB
Lua
373 lines
16 KiB
Lua
local lush = require "lush"
|
|
local hsl = lush.hsl
|
|
|
|
local theme = lush(function()
|
|
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 },
|
|
}
|
|
end)
|
|
|
|
-- return our parsed theme for extension or use else where.
|
|
return theme
|
|
|
|
-- vi:nowrap
|