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", 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 }), 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.cyan, 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 }), -- 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.derive.rust")({ fg = colors.gold }), rustSigil({ fg = colors.orange_peel }), rustSelf({ fg = colors.violet }), rustFoldBraces({ fg = colors.cyan }), rustStorage({ fg = colors.orange_peel }), -- Protobuf protoStructure({ fg = colors.orange_peel }), 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 }), typescriptVariableName({ fg = colors.orange_peel }), typescriptVariable({ fg = colors.orange_peel }), typescriptStatementKeyword({ fg = colors.orange_peel }), typescriptPromiseMethod({ fg = colors.gold }), typescriptFuncCallArg({ fg = colors.gold }), typescriptBlock({ fg = colors.gold }), typescriptFuncArg({ fg = colors.gold }), typescriptPredefinedType({ fg = colors.aquamarine }), sym("@lsp.type.interface.typescriptreact")({ fg = colors.cyan }), sym("@lsp.type.parameter.typescriptreact")({ fg = colors.cyan }), sym("@lsp.type.namespace.typescriptreact")({ fg = colors.cyan }), typescriptTemplateSB({ fg = colors.maize }), tsxTagName({ fg = colors.cyan }), -- TODO color variables inside HTML tags to cyan. Like onInputChange = {variable} -- Html htmlTagName({ fg = colors.cyan }), } end) return theme