local lush = require("lush") local hsl = lush.hsl local colors = { lightgreen = "#A5FF90", orange_peel = "#ff9d00", gold = "#fad000", violet = "#FB94FF", crayola = "#FF628C", amethyst = "#b362ff", white = "#FFFFFF", sgbus_green = "#3AD900", cyan = "#9EFFFF", space_cadet = "#191830", aquamarine = "#80FFBB", maize = "#FFEE80", none = "NONE", } local theme = lush(function(injected_functions) local sym = injected_functions.sym return { -- Editor ColorColumn({ fg = colors.none, bg = colors.gold }), Normal({ fg = colors.fg, bg = colors.space_cadet }), Comment({ fg = colors.amethyst, bg = colors.none, italic = true }), Constant({ fg = colors.gold, bg = colors.none }), Number({ fg = colors.crayola, bg = colors.none }), Include({ fg = colors.gold, bg = colors.none }), Keyword({ fg = colors.orange_peel, bg = colors.none }), Label({ fg = colors.orange_peel, bg = colors.none }), Statement({ fg = colors.orange_peel, bg = colors.none }), Operator({ fg = colors.orange_peel, bg = colors.none }), Delimiter({ fg = colors.orange_peel, bg = colors.none }), Special({ fg = colors.orange_peel, bg = colors.none }), PreProc({ fg = colors.cyan, bg = colors.none }), Float({ link = "Number" }), Function({ fg = colors.gold, bg = colors.none }), Identifier({ fg = colors.orange_peel, bg = colors.none }), Type({ fg = colors.gold, bg = colors.none }), String({ fg = colors.lightgreen, bg = colors.none }), sym("@variable")({ fg = colors.cyan }), -- Plugins DiagnosticUnnecessary({ fg = colors.none }), -- TODO telescope fix preview -- Cmp CmpItemKindFunction({ fg = colors.gold }), CmpItemKindStruct({ fg = colors.gold }), CmpItemKindConstant({ fg = colors.cyan }), CmpItemKindVariable({ fg = colors.cyan }), -- Language specific stuff.. -- Rust sym("@lsp.typemod.selfKeyword.reference.rust")({ fg = colors.violet }), sym("@lsp.typemod.variable.reference.rust")({ fg = colors.violet }), sym("@lsp.type.selfTypeKeyword")({ fg = colors.violet }), sym("@lsp.type.variable.rust")({ fg = colors.white }), sym("@lsp.type.property.rust")({ fg = colors.cyan }), sym("@lsp.typemod.property.declaration.rust")({ fg = colors.white }), sym("@lsp.type.parameter.rust")({ fg = colors.white }), sym("@lsp.type.derive.rust")({ fg = colors.gold }), rustSigil({ fg = colors.orange_peel }), rustSelf({ fg = colors.violet }), rustStorage({ fg = colors.orange_peel }), rustIdentifier({ fg = colors.gold }), rustMacro({ fg = colors.gold }), rustFoldBraces({ fg = colors.gold }), -- Protobuf protoStructure({ fg = colors.orange_peecrayolal }), protoRepeat({ fg = colors.orange_peel }), protoType({ fg = colors.gold }), -- TODO message names shall be orage_peel -- Typescript, tsx typescriptImport({ fg = colors.orange_peel }), typescriptIdentifierName({ fg = colors.cyan }), typescriptIdentifier({ fg = colors.violet }), typescriptVariableName({ fg = colors.orange_peel }), typescriptVariable({ fg = colors.orange_peel }), typescriptStatementKeyword({ fg = colors.orange_peel }), typescriptPromiseMethod({ fg = colors.gold }), typescriptBlock({ fg = colors.cyan }), typescriptFuncArg({ fg = colors.gold }), typescriptPredefinedType({ fg = colors.aquamarine }), typescriptConstructorType({ fg = colors.orange_peel }), typescriptTypeReference({ fg = colors.gold }), sym("@lsp.type.interface.typescriptreact")({ fg = colors.cyan }), sym("@lsp.type.parameter.typescriptreact")({ fg = colors.cyan }), sym("@lsp.type.namespace.typescriptreact")({ fg = colors.cyan }), sym("@lsp.type.member.typescript")({ fg = colors.gold }), sym("@lsp.type.member.typescriptreact")({ fg = colors.gold }), sym("@lsp.type.property.typescriptreact")({ fg = colors.cyan }), sym("@lsp.type.property.typescript")({ fg = colors.cyan }), typescriptTemplateSB({ fg = colors.maize }), typescriptTemplate({ fg = colors.sgbus_green }), typescriptOptionalMark({ fg = colors.orange_peel }), typescriptObjectLabel({ fg = colors.orange_peel }), typescriptObjectLiteral({ fg = colors.cyan }), typescriptReturnAnnotation({ fg = colors.cyan }), typescriptParamImpl({ fg = colors.lightgreen }), typescriptDOMFormProp({ fg = colors.gold }), tsxTagName({ fg = colors.cyan }), typescriptCall({ fg = colors.white }), -- TODO color variables inside HTML tags to cyan. Like onInputChange = {variable} -- Html -- TODO finish htmlTagName({ fg = colors.cyan }), -- Markdown markdownH1({ fg = colors.gold }), markdownH2({ fg = colors.gold }), markdownH3({ fg = colors.gold }), markdownH4({ fg = colors.gold }), markdownH5({ fg = colors.gold }), markdownH6({ fg = colors.gold }), markdownItalic({ fg = colors.violet }), markdownCodeDelimiter({ fg = colors.orange_peel }), -- Toml tomlKey({ fg = colors.gold }), tomlTable({ fg = colors.orange_peel }), -- Nix nixAttribute({ fg = colors.gold }), nixAttributeSet({ fg = colors.gold }), -- SSA/ASS ssaHeader({ fg = colors.gold }), srtTime({ fg = colors.gold }), -- Javascript -- TODO finish sym("@lsp.type.property.javascript")({ fg = colors.gold }), -- C# -- TODO in function parameters they should be gold rather than orange csStorage({ fg = colors.orange_peel }), csClass({ fg = colors.orange_peel }), csType({ fg = colors.gold }), sym("@lsp.typemod.class.static.cs")({ fg = colors.white }), sym("@lsp.type.property.cs")({ fg = colors.orange_peel }), csAccess({ fg = colors.violet }), -- TODO doesn't apply due to @lsp.type.keyword.cs overwriting it. --sym("@lsp.type.keyword.cs")({ fg = colors.gold }), -- Yaml, yml yamlBlockMappingKey({ fg = colors.gold }), yamlFlowMappingKey({ fg = colors.white }), -- .env shVariable({ fg = colors.white }), shQuote({ fg = colors.gold }), -- Elixir -- TODO make some keyword orange_peel instead of violet sym("@keyword.elixir")({ fg = colors.violet }), sym("@string.special.symbol.elixir")({ fg = colors.crayola }), sym("@function.call.elixir")({ fg = colors.cyan }), } end) return theme