| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 | local lush = require "lush"local hsl = lush.hsllocal 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
 |