shades-of-purple-nvim/lua/shades_of_purple/shades_of_purple.lua

167 lines
5.9 KiB
Lua

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