local lush = require('lush') local hsl = lush.hsl -- We'll use hsl a lot so its nice to bind it separately ---@diagnostic disable: undefined-global local theme = lush(function() local red = hsl(0, 50, 75) local orange = hsl(30, 50, 75) local yellow = hsl(60, 50, 75) local yellow_green = hsl(90, 50, 75) local green = hsl(120, 50, 75) local aquamarine = hsl(150, 50, 75) local cyan = hsl(180, 50, 75) local blue = hsl(210, 50, 75) local lavender = hsl(240, 50, 75) local purple = hsl(270, 50, 75) local fuchsia = hsl(300, 50, 75) local hot_pink = hsl(330, 50, 75) return { -- See: h highlight-groups Normal { bg = hsl(blue.h, 15, 20), fg = hsl(blue.h, 20, 75) }, CursorLine { bg = Normal.bg.li(10) }, Visual { bg = hsl(blue.h, 30, 30) }, Comment { fg = hsl(blue.h, 10, 60) }, CursorColumn { CursorLine }, LineNr { Comment, gui = "italic" }, CursorLineNr { fg = blue, bg = CursorLine.bg, gui = "italic" }, Search { bg = hsl(yellow.h, 15, 60), fg = Normal.bg }, IncSearch { bg = hsl(green.h, 15, 60), fg = Normal.bg }, String { fg = blue }, PreProc { fg = fuchsia }, Statement { fg = orange }, Type { fg = yellow }, Identifier { fg = Normal.fg }, Function { fg = green }, Operator { fg = purple }, Special { fg = hot_pink }, Constant { fg = cyan }, NonText { fg = Normal.bg.li(10) }, DiffAdd { Function }, DiffDelete { Special }, DiffChange { String }, SignColumn { Normal }, diffAdded { DiffAdd }, MoreMsg { Function, gui = "bold" }, Question { Function, gui = "bold" }, TelescopeSelection { CursorLine }, WhichKeyFloat { bg = hsl(blue.h, 15, 30) }, DiagnosticError { fg = red }, DiagnosticWarn { fg = orange }, DiagnosticInfo { fg = cyan }, Pmenu { bg = Normal.bg.li(20) }, PmenuSel { bg = Normal.bg.li(30) }, Error { bg = hsl(red.h, 50, 50), fg = Normal.fg }, ErrorMsg { Error }, MatchParen { bg = hsl(aquamarine.h, 50, 75), fg = Normal.bg }, SpecialKey { fg = red }, Directory { Constant }, Title { Operator, gui = "bold" }, Conceal { bg = Normal.bg.li(40).de(30) }, SpellBad { fg = Special.fg, gui = "underline" }, SpellRare { fg = Type.fg, gui = "underline" }, SpellLocal { fg = DiagnosticInfo.fg, gui = "underline" }, SpellCap { fg = String.fg, gui = "underline" }, } end) return theme -- vi:nowrap:number