Now standalone plugin
First impl of standalone colorscheme
This commit is contained in:
@@ -1 +1 @@
|
|||||||
require("astrotheme").load "astrobox"
|
require("astrobox").load()
|
||||||
|
|||||||
131
lua/astrobox/colors.lua
Normal file
131
lua/astrobox/colors.lua
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
return {
|
||||||
|
none = nil,
|
||||||
|
bg = {
|
||||||
|
dark = {
|
||||||
|
soft = "#32302f",
|
||||||
|
default = "#282828",
|
||||||
|
hard = "#1d2021",
|
||||||
|
},
|
||||||
|
light = {
|
||||||
|
soft = "#f2e5bc",
|
||||||
|
default = "#fbf1c7",
|
||||||
|
hard = "#f9f5d7",
|
||||||
|
},
|
||||||
|
harder = {
|
||||||
|
dark = {
|
||||||
|
soft = "#282828",
|
||||||
|
default = "#1d2021",
|
||||||
|
hard = "#171a1a",
|
||||||
|
},
|
||||||
|
light = {
|
||||||
|
soft = "#fbf1c7",
|
||||||
|
default = "#f9f5d7",
|
||||||
|
hard = "#faf7df",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
softer = {
|
||||||
|
dark = {
|
||||||
|
soft = "#343230",
|
||||||
|
default = "#32302f",
|
||||||
|
hard = "#282828",
|
||||||
|
},
|
||||||
|
light = {
|
||||||
|
soft = "#f1e3ba",
|
||||||
|
default = "#f2e5bc",
|
||||||
|
hard = "#fbf1c7",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
gray = "#928374",
|
||||||
|
|
||||||
|
grayscale = {
|
||||||
|
dark = {
|
||||||
|
"#3c3836",
|
||||||
|
"#504945",
|
||||||
|
"#665c54",
|
||||||
|
"#7c6f64",
|
||||||
|
},
|
||||||
|
light = {
|
||||||
|
"#ebdbb2",
|
||||||
|
"#d5c4a1",
|
||||||
|
"#bdae93",
|
||||||
|
"#a89984",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
colors = {
|
||||||
|
dark = {
|
||||||
|
red = "#fb4934",
|
||||||
|
green = "#b8bb26",
|
||||||
|
yellow = "#fabd2f",
|
||||||
|
blue = "#83a598",
|
||||||
|
purple = "#d3869b",
|
||||||
|
aqua = "#8ec07c",
|
||||||
|
orange = "#fe8019",
|
||||||
|
},
|
||||||
|
light = {
|
||||||
|
red = "#9d0006",
|
||||||
|
green = "#79740e",
|
||||||
|
yellow = "#b57614",
|
||||||
|
blue = "#076678",
|
||||||
|
purple = "#8f3f71",
|
||||||
|
aqua = "#427b58",
|
||||||
|
orange = "#af3a03",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
term_colors = {
|
||||||
|
red = "#cc241d",
|
||||||
|
green = "#98971a",
|
||||||
|
yellow = "#d79921",
|
||||||
|
blue = "#458588",
|
||||||
|
purple = "#b16286",
|
||||||
|
aqua = "#689d6a",
|
||||||
|
orange = "#d65d0e",
|
||||||
|
},
|
||||||
|
|
||||||
|
colored_backgrounds = {
|
||||||
|
dark = {
|
||||||
|
soft = {
|
||||||
|
red = "#5a3530",
|
||||||
|
green = "#4d4c2d",
|
||||||
|
yellow = "#6e5a2f",
|
||||||
|
blue = "#4a534f",
|
||||||
|
},
|
||||||
|
default = {
|
||||||
|
red = "#522f2a",
|
||||||
|
green = "#454528",
|
||||||
|
yellow = "#67552a",
|
||||||
|
blue = "#434e4a",
|
||||||
|
},
|
||||||
|
hard = {
|
||||||
|
red = "#492825",
|
||||||
|
green = "#3c3f22",
|
||||||
|
yellow = "#5f4f25",
|
||||||
|
blue = "#3c4845",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
light = {
|
||||||
|
soft = {
|
||||||
|
red = "#d08973",
|
||||||
|
green = "#c2b876",
|
||||||
|
yellow = "#e0c48a",
|
||||||
|
blue = "#acbfa8",
|
||||||
|
},
|
||||||
|
default = {
|
||||||
|
red = "#d5917a",
|
||||||
|
green = "#c7bf7d",
|
||||||
|
yellow = "#e6cc91",
|
||||||
|
blue = "#b2c7af",
|
||||||
|
},
|
||||||
|
hard = {
|
||||||
|
red = "#d49383",
|
||||||
|
green = "#c6c187",
|
||||||
|
yellow = "#e5cf9d",
|
||||||
|
blue = "#b0cabb",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
18
lua/astrobox/highlights/init.lua
Normal file
18
lua/astrobox/highlights/init.lua
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
local utils = require("astrobox.utils")
|
||||||
|
|
||||||
|
return function(palette, config)
|
||||||
|
local HL = {}
|
||||||
|
local function load_mod(mod, mod_name)
|
||||||
|
local ok, res = pcall(mod, palette, config)
|
||||||
|
if ok and res then
|
||||||
|
HL = vim.tbl_extend("error", HL, res)
|
||||||
|
else
|
||||||
|
vim.notify("Failed to load module " .. mod_name .. " (" .. res .. ")")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
utils.visit_astrobox_modules("highlights.modules", load_mod)
|
||||||
|
|
||||||
|
HL = vim.tbl_extend("force", HL, config.overrides)
|
||||||
|
|
||||||
|
return HL
|
||||||
|
end
|
||||||
11
lua/astrobox/highlights/modules/astro_heirline.lua
Normal file
11
lua/astrobox/highlights/modules/astro_heirline.lua
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
return function()
|
||||||
|
return {
|
||||||
|
HeirlineInactive = { link = "StatusInactive" },
|
||||||
|
HeirlineNormal = { link = "StatusNormal" },
|
||||||
|
HeirlineInsert = { link = "StatusInsert" },
|
||||||
|
HeirlineVisual = { link = "StatusVisual" },
|
||||||
|
HeirlineReplace = { link = "StatusReplace" },
|
||||||
|
HeirlineCommand = { link = "StatusCommand" },
|
||||||
|
HeirlineTerminal = { link = "StatusTerminal" },
|
||||||
|
}
|
||||||
|
end
|
||||||
6
lua/astrobox/highlights/modules/c.lua
Normal file
6
lua/astrobox/highlights/modules/c.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return function()
|
||||||
|
return {
|
||||||
|
cInclude = { link = "PreProc" },
|
||||||
|
cDefine = { link = "PreProc" }, -- Fix C ft setting this to Macro
|
||||||
|
}
|
||||||
|
end
|
||||||
133
lua/astrobox/highlights/modules/core.lua
Normal file
133
lua/astrobox/highlights/modules/core.lua
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
return function(palette)
|
||||||
|
return {
|
||||||
|
Normal = { fg = palette.fg, bg = palette.bg },
|
||||||
|
NormalNC = { link = "Normal" },
|
||||||
|
-- Italic = { italic = true },
|
||||||
|
-- Bold = { bold = true },
|
||||||
|
Conceal = { fg = palette.other.conceal, bg = palette.other.harder_bg },
|
||||||
|
SpecialKey = { fg = palette.none, bg = palette.colored_backgrounds.yellow },
|
||||||
|
NonText = { fg = palette.ui.fg_inactive, bg = palette.none },
|
||||||
|
EndOfBuffer = { fg = palette.bg, bg = palette.bg },
|
||||||
|
|
||||||
|
Directory = { fg = palette.blue, bg = palette.none },
|
||||||
|
QuickFixLine = palette.ui.selection,
|
||||||
|
MatchParen = { fg = palette.none, bg = palette.none, bold = true, underline = true },
|
||||||
|
Underlined = { fg = palette.cyan, bg = palette.none, underline = true },
|
||||||
|
|
||||||
|
-- Popup
|
||||||
|
|
||||||
|
FloatTitle = {
|
||||||
|
fg = palette.ui.float.title,
|
||||||
|
bg = palette.ui.bg,
|
||||||
|
bold = true,
|
||||||
|
},
|
||||||
|
FloatBorder = {
|
||||||
|
fg = palette.ui.float.border,
|
||||||
|
bg = palette.ui.bg,
|
||||||
|
},
|
||||||
|
NormalFloat = {
|
||||||
|
fg = palette.ui.float.text,
|
||||||
|
bg = palette.ui.bg,
|
||||||
|
},
|
||||||
|
Title = {
|
||||||
|
fg = palette.ui.float.title2,
|
||||||
|
bg = palette.bg,
|
||||||
|
bold = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Bars
|
||||||
|
|
||||||
|
TabLine = { fg = palette.ui.fg_inactive, bg = palette.ui.bg_inactive },
|
||||||
|
TabLineFill = { fg = palette.none, bg = palette.ui.bg_inactive },
|
||||||
|
TabLineSel = { fg = palette.ui.fg, bg = palette.ui.bg, bold = true, italic = true },
|
||||||
|
|
||||||
|
WinBar = { fg = palette.ui.winbar.fg, bg = palette.ui.winbar.bg },
|
||||||
|
WinBarNC = {
|
||||||
|
fg = palette.ui.winbar.fg_inactive,
|
||||||
|
bg = palette.ui.winbar.bg_inactive,
|
||||||
|
},
|
||||||
|
|
||||||
|
StatusLine = { fg = palette.ui.fg, bg = palette.ui.bg },
|
||||||
|
StatusLineNC = { fg = palette.ui.fg_inactive, bg = palette.ui.bg },
|
||||||
|
StatusNormal = { fg = palette.ui.bg, bg = palette.blue },
|
||||||
|
StatusInsert = { fg = palette.ui.bg, bg = palette.green },
|
||||||
|
StatusVisual = { fg = palette.ui.bg, bg = palette.purple },
|
||||||
|
StatusReplace = { fg = palette.ui.bg, bg = palette.red },
|
||||||
|
StatusCommand = { fg = palette.ui.bg, bg = palette.yellow },
|
||||||
|
StatusTerminal = { link = "StatusInsert" },
|
||||||
|
|
||||||
|
-- Cursor
|
||||||
|
|
||||||
|
Cursor = { fg = palette.fg, bg = palette.bg },
|
||||||
|
CursorIM = { link = "Cursor" },
|
||||||
|
lCursor = { link = "Cursor" },
|
||||||
|
CursorLineNr = { fg = palette.ui.fg, bg = palette.none },
|
||||||
|
LineNr = { fg = palette.ui.fg_inactive, bg = palette.none },
|
||||||
|
|
||||||
|
-- Columns
|
||||||
|
|
||||||
|
Folded = { fg = palette.ui.fg_inactive, bg = palette.none },
|
||||||
|
FoldColumn = { fg = palette.ui.fg_inactive, bg = palette.none },
|
||||||
|
SignColumn = { fg = palette.none, bg = palette.none }, -- TODO Test
|
||||||
|
ColorColumn = { fg = palette.none, bg = palette.other.bg_active },
|
||||||
|
CursorLine = { fg = palette.none, bg = palette.other.bg_active },
|
||||||
|
CursorColumn = { link = "CursorLine" },
|
||||||
|
|
||||||
|
-- Splits
|
||||||
|
|
||||||
|
WinSeparator = {
|
||||||
|
fg = palette.ui.win.separator,
|
||||||
|
bg = palette.bg,
|
||||||
|
-- bold = false,
|
||||||
|
},
|
||||||
|
VertSplit = {
|
||||||
|
fg = palette.ui.win.separator,
|
||||||
|
bg = palette.bg,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Diff
|
||||||
|
|
||||||
|
DiffAdd = { fg = palette.none, bg = palette.colored_backgrounds.green },
|
||||||
|
DiffChange = { fg = palette.none, bg = palette.colored_backgrounds.blue },
|
||||||
|
DiffDelete = { fg = palette.none, bg = palette.colored_backgrounds.red },
|
||||||
|
DiffText = { fg = palette.none, bg = palette.colored_backgrounds.yellow },
|
||||||
|
DiffAdded = { link = "DiffAdd" },
|
||||||
|
DiffRemoved = { link = "DiffDelete" },
|
||||||
|
DiffChanged = { link = "DiffText" }, -- TODO Switch to DiffChange?
|
||||||
|
DiffOldFile = { fg = palette.red, bg = palette.bg },
|
||||||
|
DiffNewFile = { fg = palette.green, bg = palette.bg },
|
||||||
|
DiffFile = palette.other.error_hl, -- TODO What's this?
|
||||||
|
DiffLine = palette.other.error_hl, -- TODO What's this?
|
||||||
|
DiffIndexLine = palette.other.error_hl, -- TODO What's this?
|
||||||
|
|
||||||
|
-- Cmd
|
||||||
|
|
||||||
|
ErrorMsg = { fg = palette.red, bg = palette.none },
|
||||||
|
WarningMsg = { fg = palette.yellow, bg = palette.none },
|
||||||
|
Question = { fg = palette.blue, bg = palette.none },
|
||||||
|
WildMenu = { fg = palette.ui.selection.fg, bg = palette.ui.selection.bg },
|
||||||
|
|
||||||
|
-- PMenu
|
||||||
|
|
||||||
|
Pmenu = { fg = palette.ui.fg, bg = palette.ui.bg_hard },
|
||||||
|
PmenuSel = { fg = palette.ui.selection.fg, bg = palette.ui.selection.bg },
|
||||||
|
PmenuSbar = { fg = palette.none, bg = palette.ui.float.scroll },
|
||||||
|
PmenuThumb = { link = "PmenuSbar" },
|
||||||
|
|
||||||
|
-- Search
|
||||||
|
|
||||||
|
Search = { fg = palette.fg, bg = palette.other.bg_active },
|
||||||
|
IncSearch = { fg = palette.none, bg = palette.colored_backgrounds.blue },
|
||||||
|
Substitute = { fg = palette.none, bg = palette.colored_backgrounds.yellow },
|
||||||
|
CurSearch = { link = "IncSearch" },
|
||||||
|
Visual = { fg = palette.none, bg = palette.other.bg_active },
|
||||||
|
VisualNOS = { fg = palette.other.bg_active, bg = palette.fg }, -- Meh
|
||||||
|
|
||||||
|
-- Spelling
|
||||||
|
|
||||||
|
SpellBad = { undercurl = true },
|
||||||
|
SpellCap = { undercurl = true },
|
||||||
|
SpellLocal = { undercurl = true },
|
||||||
|
SpellRare = { undercurl = true },
|
||||||
|
}
|
||||||
|
end
|
||||||
7
lua/astrobox/highlights/modules/gitsigns.lua
Normal file
7
lua/astrobox/highlights/modules/gitsigns.lua
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
return function(palette)
|
||||||
|
return {
|
||||||
|
GitSignsAdd = { fg = palette.green },
|
||||||
|
GitSignsChange = { fg = palette.yellow },
|
||||||
|
GitSignsDelete = { fg = palette.red },
|
||||||
|
}
|
||||||
|
end
|
||||||
170
lua/astrobox/highlights/modules/syntax.lua
Normal file
170
lua/astrobox/highlights/modules/syntax.lua
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
return function(palette)
|
||||||
|
return {
|
||||||
|
Boolean = { fg = palette.yellow, bg = palette.none },
|
||||||
|
Character = { link = "String" },
|
||||||
|
Comment = { fg = palette.gray, bg = palette.none, italic = true },
|
||||||
|
Conditional = { link = "Keyword" },
|
||||||
|
Constant = { fg = palette.aqua },
|
||||||
|
Debug = { fg = palette.blue, bg = palette.none },
|
||||||
|
Define = { link = "PreProc" },
|
||||||
|
Delimiter = { fg = palette.yellow, bg = palette.none },
|
||||||
|
Error = { fg = palette.red, bg = palette.none },
|
||||||
|
Exception = { link = "Keyword" },
|
||||||
|
Float = { link = "Number" },
|
||||||
|
Function = { fg = palette.fg_gradiant[1], bg = palette.none },
|
||||||
|
Identifier = { fg = palette.fg, bg = palette.none },
|
||||||
|
Ignore = { fg = palette.none, bg = palette.none },
|
||||||
|
Include = { link = "Keyword" },
|
||||||
|
Keyword = { fg = palette.red, bg = palette.none },
|
||||||
|
Label = { link = "Keyword" },
|
||||||
|
Macro = { fg = palette.orange, bg = palette.none },
|
||||||
|
Number = { fg = palette.yellow, bg = palette.none },
|
||||||
|
Operator = { fg = palette.orange, bg = palette.none },
|
||||||
|
PreCondit = { link = "PreProc" },
|
||||||
|
PreProc = { fg = palette.gray, bg = palette.none },
|
||||||
|
Repeat = { link = "Keyword" },
|
||||||
|
Special = { fg = palette.blue, bg = palette.none },
|
||||||
|
SpecialChar = { fg = palette.aqua, bg = palette.none },
|
||||||
|
SpecialComment = { fg = palette.bg_gradiant[4], bg = palette.none },
|
||||||
|
Statement = { link = "Identifier" },
|
||||||
|
StorageClass = { link = "Keyword" },
|
||||||
|
String = { fg = palette.green, bg = palette.none },
|
||||||
|
Structure = { link = "Keyword" },
|
||||||
|
Tag = { fg = palette.blue, bg = palette.none },
|
||||||
|
Todo = { fg = palette.yellow, bg = palette.harder_bg },
|
||||||
|
Type = { fg = palette.yellow, bg = palette.none },
|
||||||
|
Typedef = { link = "Keyword" },
|
||||||
|
|
||||||
|
-- Diags
|
||||||
|
DiagnosticError = { fg = palette.red },
|
||||||
|
DiagnosticHint = { fg = palette.aqua },
|
||||||
|
DiagnosticInfo = { fg = palette.blue },
|
||||||
|
DiagnosticWarn = { fg = palette.yellow },
|
||||||
|
DiagnosticUnderlineError = { sp = palette.red, undercurl = true },
|
||||||
|
DiagnosticUnderlineHint = { sp = palette.aqua, undercurl = true },
|
||||||
|
DiagnosticUnderlineInfo = { sp = palette.blue, undercurl = true },
|
||||||
|
DiagnosticUnderlineWarn = { sp = palette.yellow, undercurl = true },
|
||||||
|
LspInlayHint = { fg = palette.other.conceal, bg = palette.other.hard_bg },
|
||||||
|
LspCodeLens = { link = "LspInlayHint" },
|
||||||
|
LspCodeLensSeparator = { link = "LspCodeLens" },
|
||||||
|
LspReferenceRead = { fg = palette.none, bg = palette.harder_bg },
|
||||||
|
LspReferenceWrite = { fg = palette.none, bg = palette.harder_bg },
|
||||||
|
LspReferenceText = { fg = palette.none, bg = palette.softer_bg }, -- TODO Keep different?
|
||||||
|
|
||||||
|
["@annotation"] = { fg = palette.yellow },
|
||||||
|
["@attribute"] = { fg = palette.yellow },
|
||||||
|
["@boolean"] = { link = "Boolean" },
|
||||||
|
["@character"] = { link = "Character" },
|
||||||
|
["@character.special"] = { link = "SpecialChar" },
|
||||||
|
["@class"] = { fg = palette.yellow },
|
||||||
|
["@comment"] = { link = "Comment" },
|
||||||
|
["@comment.documentation"] = { fg = palette.gray, italic = false },
|
||||||
|
["@conditional"] = { link = "Conditional" },
|
||||||
|
["@constant"] = { link = "Constant" },
|
||||||
|
["@constant.builtin"] = { link = "@constant" },
|
||||||
|
["@constant.macro"] = { link = "@constant" },
|
||||||
|
["@constructor"] = { fg = palette.fg_gradiant[1], bold = true },
|
||||||
|
["@debug"] = { link = "Debug" },
|
||||||
|
["@decorator"] = { fg = palette.orange },
|
||||||
|
["@define"] = { link = "Define" },
|
||||||
|
["@enum"] = { fg = palette.cyan },
|
||||||
|
["@enumMember"] = { fg = palette.blue },
|
||||||
|
["@error"] = { link = "Error" },
|
||||||
|
["@event"] = { fg = palette.orange },
|
||||||
|
["@exception"] = { link = "Exception" },
|
||||||
|
["@field"] = { link = "Identifier" },
|
||||||
|
["@float"] = { link = "Float" },
|
||||||
|
["@function"] = { link = "Function" },
|
||||||
|
["@function.macro"] = { link = "Macro" },
|
||||||
|
["@include"] = { link = "Include" },
|
||||||
|
["@interface"] = { fg = palette.orange },
|
||||||
|
["@keyword"] = { link = "Keyword" },
|
||||||
|
["@label"] = { link = "Label" },
|
||||||
|
["@method"] = { fg = palette.fg_gradiant[1] },
|
||||||
|
["@modifier"] = { fg = palette.orange },
|
||||||
|
["@namespace"] = { fg = palette.fg_gradiant[2] },
|
||||||
|
["@none"] = { link = "Conceal" },
|
||||||
|
["@number"] = { link = "Number" },
|
||||||
|
["@operator"] = { link = "Operator" },
|
||||||
|
["@parameter"] = { fg = palette.fg_gradiant[1] },
|
||||||
|
["@preproc"] = { link = "PreProc" },
|
||||||
|
["@property"] = { link = "@field" },
|
||||||
|
["@punctuation.bracket"] = { link = "Identifier" },
|
||||||
|
["@punctuation.delimiter"] = { fg = palette.orange },
|
||||||
|
["@punctuation.special"] = { link = "Special" },
|
||||||
|
["@regexp"] = { fg = palette.cyan },
|
||||||
|
["@repeat"] = { link = "Repeat" },
|
||||||
|
["@storageclass"] = { link = "StorageClass" },
|
||||||
|
["@storageclass.lifeTime"] = { fg = palette.purple },
|
||||||
|
["@string"] = { link = "String" },
|
||||||
|
["@string.escape"] = { fg = palette.red },
|
||||||
|
["@string.regex"] = { fg = palette.aqua },
|
||||||
|
["@string.special"] = { link = "Special" },
|
||||||
|
["@struct"] = { fg = palette.yellow },
|
||||||
|
["@symbol"] = { link = "Special" },
|
||||||
|
["@tag"] = { fg = palette.red },
|
||||||
|
["@tag.attribute"] = { fg = palette.yellow },
|
||||||
|
["@tag.delimiter"] = { fg = palette.fg },
|
||||||
|
["@text"] = { fg = palette.fg },
|
||||||
|
["@text.checked"] = { fg = palette.green },
|
||||||
|
["@text.danger"] = { fg = palette.red },
|
||||||
|
["@text.diff.add"] = { link = "DiffAdded" },
|
||||||
|
["@text.diff.delete"] = { link = "DiffDelete" },
|
||||||
|
["@text.emphasis"] = { fg = palette.fg, italic = true },
|
||||||
|
["@text.environment"] = { fg = palette.yellow },
|
||||||
|
["@text.environment.name"] = { fg = palette.orange },
|
||||||
|
["@text.literal"] = { fg = palette.fg },
|
||||||
|
["@text.math"] = { fg = palette.aqua },
|
||||||
|
["@text.note"] = { fg = palette.aqua },
|
||||||
|
["@text.quote"] = { fg = palette.fg, italic = true },
|
||||||
|
["@text.reference"] = { fg = palette.aqua, bold = true },
|
||||||
|
["@text.strike"] = { fg = palette.fg, strikethrough = true },
|
||||||
|
["@text.strong"] = { fg = palette.fg, bold = true },
|
||||||
|
["@text.title"] = { fg = palette.green, bold = true },
|
||||||
|
["@text.title.1.markdown"] = { fg = palette.blue, bold = true },
|
||||||
|
["@text.title.2.markdown"] = { fg = palette.aqua, bold = true },
|
||||||
|
["@text.title.3.markdown"] = { fg = palette.purple, bold = true },
|
||||||
|
["@text.title.4.markdown"] = { fg = palette.yellow, bold = true },
|
||||||
|
["@text.todo"] = { link = "Todo" },
|
||||||
|
["@text.todo.checked"] = { link = "@text.checked" },
|
||||||
|
["@text.todo.danger"] = { link = "@text.danger" },
|
||||||
|
["@text.todo.note"] = { link = "@text.note" },
|
||||||
|
["@text.todo.unchecked"] = { link = "@text.unchecked" },
|
||||||
|
["@text.todo.warning"] = { link = "@text.warning" },
|
||||||
|
["@text.unchecked"] = { fg = palette.blue },
|
||||||
|
["@text.underline"] = { link = "Underline" },
|
||||||
|
["@text.uri"] = { link = "Underlined" },
|
||||||
|
["@text.warning"] = { fg = palette.yellow },
|
||||||
|
["@type"] = { link = "Type" },
|
||||||
|
["@type.qualifier"] = { fg = palette.purple },
|
||||||
|
["@typeParameter"] = { fg = palette.yellow },
|
||||||
|
["@variable"] = { link = "Identifier" },
|
||||||
|
["@variable.builtin"] = { bold = true },
|
||||||
|
|
||||||
|
-- LSP
|
||||||
|
["@lsp.mod.attribute"] = { link = "@attribute" },
|
||||||
|
["@lsp.mod.documentation"] = { link = "@comment.documentation" },
|
||||||
|
["@lsp.type"] = { link = "@type" },
|
||||||
|
["@lsp.type.attributeBracket"] = { fg = palette.orange },
|
||||||
|
["@lsp.type.derive"] = { fg = palette.orange },
|
||||||
|
["@lsp.type.enum"] = { link = "@enum" },
|
||||||
|
["@lsp.type.enumMember"] = { link = "@enumMember" },
|
||||||
|
["@lsp.type.interface"] = { fg = palette.orange },
|
||||||
|
["@lsp.type.keyword"] = { link = "Keyword" },
|
||||||
|
["@lsp.type.lifeTime"] = { fg = palette.purple },
|
||||||
|
["@lsp.type.method"] = { link = "@method" },
|
||||||
|
["@lsp.type.namespace"] = { fg = palette.fg_gradiant[1] },
|
||||||
|
["@lsp.type.operator"] = { link = "Operator" },
|
||||||
|
["@lsp.type.parameter"] = { link = "@parameter" },
|
||||||
|
["@lsp.type.property"] = { link = "@property" },
|
||||||
|
["@lsp.type.selfTypeKeyword"] = { fg = palette.aqua, bold = true },
|
||||||
|
["@lsp.type.struct"] = { link = "@struct" },
|
||||||
|
["@lsp.type.typeParameter"] = { link = "@type" },
|
||||||
|
["@lsp.type.variable"] = { link = "@variable" },
|
||||||
|
["@lsp.typemod.class.constructorOrDestructor"] = { link = "@constructor" },
|
||||||
|
["@lsp.typemod.method"] = { link = "@method" },
|
||||||
|
["@lsp.typemod.selfKeyword"] = { fg = palette.fg_gradiant[1], bold = true },
|
||||||
|
["@lsp.typemod.string.attribute"] = { link = "String" }, -- Hmmmm
|
||||||
|
["@lsp.typemod.variable.readonly"] = { link = "Constant" },
|
||||||
|
}
|
||||||
|
end
|
||||||
36
lua/astrobox/init.lua
Normal file
36
lua/astrobox/init.lua
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
local palette = require("astrobox.palette")
|
||||||
|
local highlights = require("astrobox.highlights")
|
||||||
|
|
||||||
|
local default_cfg = {
|
||||||
|
contrast = "default", -- soft, default or hard
|
||||||
|
overrides = {}
|
||||||
|
}
|
||||||
|
|
||||||
|
local M = {
|
||||||
|
cfg = {},
|
||||||
|
palette = {},
|
||||||
|
hl = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
function M.setup(user_cfg)
|
||||||
|
M.cfg = user_cfg
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.set_highlights(list)
|
||||||
|
for hl, def in pairs(list) do
|
||||||
|
vim.api.nvim_set_hl(0, hl, def)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.load()
|
||||||
|
local cfg = vim.tbl_extend("force", default_cfg, M.cfg or {})
|
||||||
|
M.palette = palette(cfg)
|
||||||
|
M.hl = highlights(M.palette, cfg)
|
||||||
|
for index, color in ipairs(M.palette.term_colors) do
|
||||||
|
vim.g["terminal_color_" .. index - 1] = color
|
||||||
|
end
|
||||||
|
vim.g.colors_name = "astrobox"
|
||||||
|
M.set_highlights(M.hl)
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
84
lua/astrobox/palette.lua
Normal file
84
lua/astrobox/palette.lua
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
local colors = require("astrobox.colors")
|
||||||
|
|
||||||
|
return function(config)
|
||||||
|
local vimbg = vim.o.background
|
||||||
|
local dark = vimbg == "dark"
|
||||||
|
local vimbg_reversed = dark and "light" or "dark"
|
||||||
|
|
||||||
|
-- Build base colors
|
||||||
|
local base = {
|
||||||
|
none = "",
|
||||||
|
fg = colors.grayscale[vimbg_reversed][1],
|
||||||
|
bg = colors.bg[vimbg][config.contrast],
|
||||||
|
|
||||||
|
harder_bg = colors.bg.harder[vimbg][config.contrast],
|
||||||
|
softer_bg = colors.bg.softer[vimbg][config.contrast],
|
||||||
|
|
||||||
|
bg_gradiant = colors.grayscale[vimbg],
|
||||||
|
fg_gradiant = colors.grayscale[vimbg_reversed],
|
||||||
|
|
||||||
|
colored_backgrounds = colors.colored_backgrounds[vimbg][config.contrast],
|
||||||
|
|
||||||
|
gray = colors.gray, -- TODO Rémy Only for comments? Won't look good in light mode
|
||||||
|
}
|
||||||
|
-- Append colors
|
||||||
|
local palette = vim.tbl_extend("error", base, colors.colors[vimbg])
|
||||||
|
|
||||||
|
palette.ui = {
|
||||||
|
fg = palette.fg,
|
||||||
|
bg = palette.bg_gradiant[1],
|
||||||
|
bg_hard = palette.harder_bg,
|
||||||
|
fg_inactive = palette.fg_gradiant[4],
|
||||||
|
bg_inactive = palette.bg_gradiant[2],
|
||||||
|
float = {
|
||||||
|
title = palette.green,
|
||||||
|
title2 = palette.aqua,
|
||||||
|
border = palette.fg_gradiant[2],
|
||||||
|
text = palette.fg_gradiant[1],
|
||||||
|
scroll = palette.blue,
|
||||||
|
},
|
||||||
|
winbar = {
|
||||||
|
fg = palette.fg_gradiant[1],
|
||||||
|
bg = palette.harder_bg,
|
||||||
|
fg_inactive = palette.bg_gradiant[3],
|
||||||
|
bg_inactive = palette.harder_bg,
|
||||||
|
},
|
||||||
|
selection = {
|
||||||
|
fg = palette.fg,
|
||||||
|
bg = palette.colored_backgrounds.blue,
|
||||||
|
},
|
||||||
|
win = {
|
||||||
|
separator = palette.fg_gradiant[4],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
palette.other = {
|
||||||
|
conceal = palette.bg_gradiant[3],
|
||||||
|
hard_bg = palette.harder_bg,
|
||||||
|
bg_active = palette.bg_gradiant[1],
|
||||||
|
|
||||||
|
-- Special HL group to find what a group maps to
|
||||||
|
error_hl = { fg = "#000000", bg = "#FF00FF" },
|
||||||
|
}
|
||||||
|
|
||||||
|
palette.term_colors = {
|
||||||
|
palette.bg,
|
||||||
|
colors.term_colors.red,
|
||||||
|
colors.term_colors.green,
|
||||||
|
colors.term_colors.yellow,
|
||||||
|
colors.term_colors.blue,
|
||||||
|
colors.term_colors.purple,
|
||||||
|
colors.term_colors.aqua,
|
||||||
|
palette.fg_gradiant[4],
|
||||||
|
palette.gray,
|
||||||
|
colors.colors.red,
|
||||||
|
colors.colors.green,
|
||||||
|
colors.colors.yellow,
|
||||||
|
colors.colors.blue,
|
||||||
|
colors.colors.purple,
|
||||||
|
colors.colors.aqua,
|
||||||
|
palette.fg,
|
||||||
|
}
|
||||||
|
|
||||||
|
return palette
|
||||||
|
end
|
||||||
36
lua/astrobox/utils.lua
Normal file
36
lua/astrobox/utils.lua
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
local function get_module_root_path(modname)
|
||||||
|
local list = vim.loader.find(modname)
|
||||||
|
if list and #list then
|
||||||
|
return list[1].modpath:sub(0, -9) -- Cut init.lua
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
ASTROBOX_ROOT_PATH = get_module_root_path("astrobox")
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.visit_astrobox_modules(module, visitor)
|
||||||
|
local modpath = ASTROBOX_ROOT_PATH .. module:gsub("%.", "/")
|
||||||
|
local hdl, err, msg = vim.loop.fs_scandir(modpath)
|
||||||
|
if hdl == nil then
|
||||||
|
print("Astrobox err: " .. err .. " " .. vim.inspect(msg))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
while true do
|
||||||
|
local entry, type = vim.loop.fs_scandir_next(hdl)
|
||||||
|
if entry == nil then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
if type == "file" and vim.endswith(entry, ".lua") then
|
||||||
|
local mod_name = entry:sub(0, -5) -- cut extension
|
||||||
|
local ok, mod = pcall(require, "astrobox." .. module .. "." .. mod_name)
|
||||||
|
if ok then
|
||||||
|
visitor(mod, mod_name)
|
||||||
|
else
|
||||||
|
print("AstroBox:Failed to load module " .. mod_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@@ -1,123 +0,0 @@
|
|||||||
local c = {
|
|
||||||
none = "NONE",
|
|
||||||
syntax = {},
|
|
||||||
ui = {},
|
|
||||||
term = {},
|
|
||||||
}
|
|
||||||
|
|
||||||
--------------------------------
|
|
||||||
--- Syntax
|
|
||||||
--------------------------------
|
|
||||||
c.syntax.red = "#fb4934"
|
|
||||||
c.syntax.orange = "#fe8019"
|
|
||||||
c.syntax.yellow = "#fabd2f"
|
|
||||||
c.syntax.green = "#b8bb26"
|
|
||||||
c.syntax.cyan = "#8ec07c"
|
|
||||||
c.syntax.blue = "#83a598"
|
|
||||||
c.syntax.purple = "#d3869b"
|
|
||||||
c.syntax.text = "#ebdbb2"
|
|
||||||
c.syntax.comment = "#928374"
|
|
||||||
c.syntax.mute = "#504945"
|
|
||||||
|
|
||||||
--------------------------------
|
|
||||||
--- UI
|
|
||||||
--------------------------------
|
|
||||||
c.ui.red = "#cc241d"
|
|
||||||
c.ui.orange = "#d65d0e"
|
|
||||||
c.ui.yellow = "#d79921"
|
|
||||||
c.ui.green = "#98971a"
|
|
||||||
c.ui.cyan = "#689d6a"
|
|
||||||
c.ui.blue = "#458588"
|
|
||||||
c.ui.purple = "#b16286"
|
|
||||||
|
|
||||||
c.ui.accent = "#98971a"
|
|
||||||
|
|
||||||
c.ui.tabline = "#282828"
|
|
||||||
c.ui.winbar = "#a89984"
|
|
||||||
c.ui.tool = "#171a1a"
|
|
||||||
c.ui.base = "#1d2021"
|
|
||||||
c.ui.inactive_base = c.ui.tool
|
|
||||||
c.ui.statusline = c.ui.tabline
|
|
||||||
c.ui.split = c.ui.winbar
|
|
||||||
c.ui.popup = c.ui.inactive_base
|
|
||||||
c.ui.float = c.ui.inactive_base
|
|
||||||
c.ui.title = c.ui.accent
|
|
||||||
c.ui.border = "#f9f5d7"
|
|
||||||
c.ui.current_line = "#32302f"
|
|
||||||
c.ui.scrollbar = c.ui.accent
|
|
||||||
c.ui.selection = "#3c3836"
|
|
||||||
c.ui.menu_selection = c.ui.accent
|
|
||||||
c.ui.highlight = c.ui.tool
|
|
||||||
c.ui.none_text = "#7c6f64"
|
|
||||||
c.ui.text = "#ebdbb2"
|
|
||||||
c.ui.text_active = "#f9f5d7"
|
|
||||||
c.ui.text_inactive = c.ui.winbar
|
|
||||||
c.ui.text_match = c.ui.accent
|
|
||||||
|
|
||||||
--------------------------------
|
|
||||||
--- terminal
|
|
||||||
--------------------------------
|
|
||||||
c.term.black = c.ui.tabline
|
|
||||||
c.term.bright_black = c.ui.tabline
|
|
||||||
|
|
||||||
c.term.red = c.syntax.red
|
|
||||||
c.term.bright_red = c.syntax.red
|
|
||||||
|
|
||||||
c.term.green = c.syntax.green
|
|
||||||
c.term.bright_green = c.syntax.green
|
|
||||||
|
|
||||||
c.term.yellow = c.syntax.yellow
|
|
||||||
c.term.bright_yellow = c.syntax.yellow
|
|
||||||
|
|
||||||
c.term.blue = c.syntax.blue
|
|
||||||
c.term.bright_blue = c.syntax.blue
|
|
||||||
|
|
||||||
c.term.purple = c.syntax.purple
|
|
||||||
c.term.bright_purple = c.syntax.purple
|
|
||||||
|
|
||||||
c.term.cyan = c.syntax.cyan
|
|
||||||
c.term.bright_cyan = c.syntax.cyan
|
|
||||||
|
|
||||||
c.term.white = c.ui.text
|
|
||||||
c.term.bright_white = c.ui.text_active
|
|
||||||
|
|
||||||
c.term.background = c.ui.base
|
|
||||||
c.term.foreground = c.ui.text
|
|
||||||
|
|
||||||
--------------------------------
|
|
||||||
--- Icons
|
|
||||||
--------------------------------
|
|
||||||
c.icon = {
|
|
||||||
c = "#519aba",
|
|
||||||
css = "#61afef",
|
|
||||||
deb = "#a1b7ee",
|
|
||||||
docker = "#384d54",
|
|
||||||
html = "#de8c92",
|
|
||||||
jpeg = "#c882e7",
|
|
||||||
jpg = "#c882e7",
|
|
||||||
js = "#ebcb8b",
|
|
||||||
jsx = "#519ab8",
|
|
||||||
kt = "#7bc99c",
|
|
||||||
lock = "#c4c720",
|
|
||||||
lua = "#51a0cf",
|
|
||||||
mp3 = "#d39ede",
|
|
||||||
mp4 = "#9ea3de",
|
|
||||||
out = "#abb2bf",
|
|
||||||
png = "#c882e7",
|
|
||||||
py = "#a3b8ef",
|
|
||||||
rb = "#ff75a0",
|
|
||||||
robots = "#abb2bf",
|
|
||||||
rpm = "#fca2aa",
|
|
||||||
rs = "#dea584",
|
|
||||||
toml = "#39bf39",
|
|
||||||
ts = "#519aba",
|
|
||||||
ttf = "#abb2bf",
|
|
||||||
vue = "#7bc99c",
|
|
||||||
woff = "#abb2bf",
|
|
||||||
woff2 = "#abb2bf",
|
|
||||||
zip = "#f9d71c",
|
|
||||||
md = "#519aba",
|
|
||||||
pkg = "#d39ede",
|
|
||||||
}
|
|
||||||
|
|
||||||
return c
|
|
||||||
Reference in New Issue
Block a user