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

117 lines
3.8 KiB
Lua
Raw Normal View History

local lush = require("lush")
2024-12-16 19:18:38 +01:00
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",
2024-12-16 19:18:38 +01:00
none = "NONE",
2024-12-16 19:18:38 +01:00
}
local theme = lush(function(injected_functions)
local sym = injected_functions.sym
return {
2024-12-16 19:18:38 +01:00
-- 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.crayola, 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.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
-- 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_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 }),
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 }),
sym("@lsp.type.property.typescriptreact")({ fg = colors.cyan }),
typescriptTemplateSB({ fg = colors.maize }),
tsxTagName({ fg = colors.cyan }),
-- 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 }),
-- Javascript
-- TODO finish
sym("@lsp.type.property.javascript")({ fg = colors.gold }),
}
2024-12-16 19:18:38 +01:00
end)
return theme