|
|
|
|
@@ -1,7 +1,17 @@
|
|
|
|
|
local p = require 'tokyo.palette'
|
|
|
|
|
local function opt_italic(lhs, rhs) vim.tbl_extend('force', lhs, {italic = rhs}) end
|
|
|
|
|
local p = require('tokyo.palette')
|
|
|
|
|
local cfg = require('tokyo.config')
|
|
|
|
|
local hl = {}
|
|
|
|
|
local u = require('tokyo.utils')
|
|
|
|
|
|
|
|
|
|
local M = {}
|
|
|
|
|
local hl = {langs = {}, plugins = {}}
|
|
|
|
|
|
|
|
|
|
local highlight = vim.api.nvim_set_hl
|
|
|
|
|
local set_hl_ns = vim.api.nvim__set_hl_ns or vim.api.nvim_set_hl_ns
|
|
|
|
|
local create_namespace = vim.api.nvim_create_namespace
|
|
|
|
|
|
|
|
|
|
local function load_highlights(ns, highlights)
|
|
|
|
|
for group_name, group_settings in pairs(highlights) do highlight(ns, group_name, group_settings) end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
hl.predef = {
|
|
|
|
|
Fg = {fg = p.fg},
|
|
|
|
|
@@ -12,15 +22,19 @@ hl.predef = {
|
|
|
|
|
Green = {fg = p.green},
|
|
|
|
|
Blue = {fg = p.blue},
|
|
|
|
|
Purple = {fg = p.purple},
|
|
|
|
|
BlueItalic = {fg = p.blue, italic = cfg.enable_italic},
|
|
|
|
|
RedItalic = {fg = p.red, italic = cfg.enable_italic},
|
|
|
|
|
GreenItalic = {fg = p.green, italic = cfg.enable_italic},
|
|
|
|
|
OrangeItalic = {fg = p.orange, italic = cfg.enable_italic}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hl.common = {
|
|
|
|
|
Normal = {fg = p.fg, bg = cfg.bg_transparent and p.none or p.bg0},
|
|
|
|
|
Terminal = {fg = p.fg, bg = cfg.bg_transparent and p.none or p.bg0},
|
|
|
|
|
EndOfBuffer = {fg = p.bg2, bg = cfg.bg_transparent and p.none or p.bg0},
|
|
|
|
|
FoldColumn = {fg = p.fg, bg = cfg.bg_transparent and p.none or p.bg1},
|
|
|
|
|
Folded = {fg = p.fg, bg = cfg.bg_transparent and p.none or p.bg1},
|
|
|
|
|
SignColumn = {fg = p.fg, bg = cfg.bg_transparent and p.none or p.bg0},
|
|
|
|
|
Normal = {fg = p.fg, bg = cfg.transparent_background and p.none or p.bg0},
|
|
|
|
|
Terminal = {fg = p.fg, bg = cfg.transparent_background and p.none or p.bg0},
|
|
|
|
|
EndOfBuffer = {fg = p.bg2, bg = cfg.transparent_background and p.none or p.bg0},
|
|
|
|
|
FoldColumn = {fg = p.fg, bg = cfg.transparent_background and p.none or p.bg1},
|
|
|
|
|
Folded = {fg = p.fg, bg = cfg.transparent_background and p.none or p.bg1},
|
|
|
|
|
SignColumn = {fg = p.fg, bg = cfg.transparent_background and p.none or p.bg0},
|
|
|
|
|
ToolbarLine = {fg = p.fg},
|
|
|
|
|
Cursor = {reverse = true},
|
|
|
|
|
vCursor = {reverse = true},
|
|
|
|
|
@@ -31,6 +45,7 @@ hl.common = {
|
|
|
|
|
CursorLine = {bg = p.bg1},
|
|
|
|
|
ColorColumn = {bg = p.bg1},
|
|
|
|
|
CursorLineNr = {fg = p.fg},
|
|
|
|
|
LineNr = {fg = p.bg4},
|
|
|
|
|
Conceal = {fg = p.grey, bg = p.bg1},
|
|
|
|
|
DiffAdd = {fg = p.none, bg = p.diff_green},
|
|
|
|
|
DiffChange = {fg = p.none, bg = p.diff_blue},
|
|
|
|
|
@@ -38,9 +53,9 @@ hl.common = {
|
|
|
|
|
DiffText = {fg = p.none, reverse = true},
|
|
|
|
|
Directory = {fg = p.green},
|
|
|
|
|
ErrorMsg = {fg = p.red, bold = true, underline = true},
|
|
|
|
|
WarningMsg = {fg = p.yellow, bg = p.none, bold = true},
|
|
|
|
|
ModeMsg = {fg = p.fg, bg = p.none, bold = true},
|
|
|
|
|
MoreMsg = {fg = p.blue, bg = p.none, bold = true},
|
|
|
|
|
WarningMsg = {fg = p.yellow, bold = true},
|
|
|
|
|
ModeMsg = {fg = p.fg, bold = true},
|
|
|
|
|
MoreMsg = {fg = p.blue, bold = true},
|
|
|
|
|
IncSearch = {fg = p.bg0, bg = p.bg_red},
|
|
|
|
|
Search = {fg = p.bg0, bg = p.bg_green},
|
|
|
|
|
MatchParen = {fg = p.none, bg = p.bg4},
|
|
|
|
|
@@ -49,14 +64,14 @@ hl.common = {
|
|
|
|
|
SpecialKey = {fg = p.bg4},
|
|
|
|
|
Pmenu = {fg = p.fg, bg = p.bg2},
|
|
|
|
|
PmenuSbar = {fg = p.none, bg = p.bg2},
|
|
|
|
|
PmenuSel = {fg = p.bg0, bg = p.blue},
|
|
|
|
|
PmenuSel = {fg = p.bg0, bg = p.bg_green},
|
|
|
|
|
WildMenu = {fg = p.bg0, bg = p.blue},
|
|
|
|
|
PmenuThumb = {fg = p.none, bg = p.grey},
|
|
|
|
|
Question = {fg = p.yellow, bg = p.none},
|
|
|
|
|
SpellBad = {fg = p.red, bg = p.none, underline = true, sp = p.red},
|
|
|
|
|
SpellCap = {fg = p.yellow, bg = p.none, underline = true, sp = p.yellow},
|
|
|
|
|
SpellLocal = {fg = p.blue, bg = p.none, underline = true, sp = p.blue},
|
|
|
|
|
SpellRare = {fg = p.purple, bg = p.none, underline = true, sp = p.purple},
|
|
|
|
|
Question = {fg = p.yellow},
|
|
|
|
|
SpellBad = {fg = p.red, underline = true, sp = p.red},
|
|
|
|
|
SpellCap = {fg = p.yellow, underline = true, sp = p.yellow},
|
|
|
|
|
SpellLocal = {fg = p.blue, underline = true, sp = p.blue},
|
|
|
|
|
SpellRare = {fg = p.purple, underline = true, sp = p.purple},
|
|
|
|
|
StatusLine = {fg = p.fg, bg = p.bg3},
|
|
|
|
|
StatusLineTerm = {fg = p.fg, bg = p.bg3},
|
|
|
|
|
StatusLineNC = {fg = p.grey, bg = p.bg1},
|
|
|
|
|
@@ -64,53 +79,53 @@ hl.common = {
|
|
|
|
|
TabLine = {fg = p.fg, bg = p.bg4},
|
|
|
|
|
TabLineFill = {fg = p.grey, bg = p.bg1},
|
|
|
|
|
TabLineSel = {fg = p.bg0, bg = p.bg_red},
|
|
|
|
|
VertSplit = {fg = p.black, bg = p.none},
|
|
|
|
|
VertSplit = {fg = p.black},
|
|
|
|
|
Visual = {fg = p.none, bg = p.bg3},
|
|
|
|
|
VisualNOS = {fg = p.none, bg = p.bg3, underline = true},
|
|
|
|
|
QuickFixLine = {fg = p.blue, bg = p.none, underline = true},
|
|
|
|
|
Debug = {fg = p.yellow, bg = p.none},
|
|
|
|
|
QuickFixLine = {fg = p.blue, underline = true},
|
|
|
|
|
Debug = {fg = p.yellow},
|
|
|
|
|
debugPC = {fg = p.bg0, bg = p.green},
|
|
|
|
|
debugBreakpoint = {fg = p.bg0, bg = p.red},
|
|
|
|
|
ToolbarButton = {fg = p.bg0, bg = p.bg_blue}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hl.syntax = {
|
|
|
|
|
Type = {fg = p.blue, italic = cfg.italic_enabled},
|
|
|
|
|
Structure = {fg = p.blue, italic = cfg.italic_enabled},
|
|
|
|
|
StorageClass = {fg = p.blue, italic = cfg.italic_enabled},
|
|
|
|
|
Identifier = {fg = p.orange, italic = cfg.italic_enabled},
|
|
|
|
|
Constant = {fg = p.orange, italic = cfg.italic_enabled},
|
|
|
|
|
PreProc = {fg = p.red},
|
|
|
|
|
PreCondit = {fg = p.red},
|
|
|
|
|
Include = {fg = p.red},
|
|
|
|
|
Keyword = {fg = p.red},
|
|
|
|
|
Define = {fg = p.red},
|
|
|
|
|
Typedef = {fg = p.red},
|
|
|
|
|
Exception = {fg = p.red},
|
|
|
|
|
Conditional = {fg = p.red},
|
|
|
|
|
Repeat = {fg = p.red},
|
|
|
|
|
Statement = {fg = p.red},
|
|
|
|
|
Macro = {fg = p.purple},
|
|
|
|
|
Error = {fg = p.red},
|
|
|
|
|
Label = {fg = p.purple},
|
|
|
|
|
Special = {fg = p.purple},
|
|
|
|
|
SpecialChar = {fg = p.purple},
|
|
|
|
|
Boolean = {fg = p.purple},
|
|
|
|
|
String = {fg = p.yellow},
|
|
|
|
|
Character = {fg = p.yellow},
|
|
|
|
|
Number = {fg = p.purple},
|
|
|
|
|
Float = {fg = p.purple},
|
|
|
|
|
Function = {fg = p.green},
|
|
|
|
|
Operator = {fg = p.red},
|
|
|
|
|
Title = {fg = p.red},
|
|
|
|
|
Tag = {fg = p.orange},
|
|
|
|
|
Delimiter = {fg = p.fg},
|
|
|
|
|
Comment = {fg = p.gray, italic = true},
|
|
|
|
|
SpecialComment = {fg = p.grey},
|
|
|
|
|
Todo = {fg = p.blue}
|
|
|
|
|
Type = hl.predef.BlueItalic,
|
|
|
|
|
Structure = hl.predef.BlueItalic,
|
|
|
|
|
StorageClass = hl.predef.BlueItalic,
|
|
|
|
|
Identifier = hl.predef.OrangeItalic,
|
|
|
|
|
Constant = hl.predef.OrangeItalic,
|
|
|
|
|
PreProc = hl.predef.Red,
|
|
|
|
|
PreCondit = hl.predef.Red,
|
|
|
|
|
Include = hl.predef.Red,
|
|
|
|
|
Keyword = hl.predef.Red,
|
|
|
|
|
Define = hl.predef.Red,
|
|
|
|
|
Typedef = hl.predef.Red,
|
|
|
|
|
Exception = hl.predef.Red,
|
|
|
|
|
Conditional = hl.predef.Red,
|
|
|
|
|
Repeat = hl.predef.Red,
|
|
|
|
|
Statement = hl.predef.Red,
|
|
|
|
|
Macro = hl.predef.Purple,
|
|
|
|
|
Error = hl.predef.Red,
|
|
|
|
|
Label = hl.predef.Purple,
|
|
|
|
|
Special = hl.predef.Purple,
|
|
|
|
|
SpecialChar = hl.predef.Purple,
|
|
|
|
|
Boolean = hl.predef.Purple,
|
|
|
|
|
String = hl.predef.Yellow,
|
|
|
|
|
Character = hl.predef.Yellow,
|
|
|
|
|
Number = hl.predef.Purple,
|
|
|
|
|
Float = hl.predef.Purple,
|
|
|
|
|
Function = hl.predef.Green,
|
|
|
|
|
Operator = hl.predef.Red,
|
|
|
|
|
Title = hl.predef.Red,
|
|
|
|
|
Tag = hl.predef.Orange,
|
|
|
|
|
Delimiter = hl.predef.Fg,
|
|
|
|
|
Comment = {fg = p.bg4, italic = cfg.enable_italic_comment},
|
|
|
|
|
SpecialComment = {fg = p.bg4, italic = cfg.enable_italic_comment},
|
|
|
|
|
Todo = {fg = p.blue, italic = cfg.enable_italic_comment}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hl.lua = {
|
|
|
|
|
hl.langs.lua = {
|
|
|
|
|
luaFunc = hl.predef.Green,
|
|
|
|
|
luaFunction = hl.predef.Red,
|
|
|
|
|
luaTable = hl.predef.Fg,
|
|
|
|
|
@@ -119,46 +134,38 @@ hl.lua = {
|
|
|
|
|
luaLocalRed = hl.predef.Red,
|
|
|
|
|
luaSpecialValue = hl.predef.Green,
|
|
|
|
|
luaBraces = hl.predef.Fg,
|
|
|
|
|
luaBuiltIn = opt_italic(hl.predef.Blue, cfg.italic_enabled),
|
|
|
|
|
luaBuiltIn = hl.predef.BlueItalic,
|
|
|
|
|
luaNoise = hl.predef.Grey,
|
|
|
|
|
luaLabel = hl.predef.Purple,
|
|
|
|
|
luaFuncTable = opt_italic(hl.predef.Blue, cfg.italic_enabled),
|
|
|
|
|
luaFuncTable = hl.predef.BlueItalic,
|
|
|
|
|
luaFuncArgName = hl.predef.Fg,
|
|
|
|
|
luaEllipsis = hl.predef.Red,
|
|
|
|
|
luaDocTag = hl.predef.Green
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hl.python = {
|
|
|
|
|
pythonBuiltin = opt_italic(hl.predef.Blue, {italic = cfg.italic_enabled}),
|
|
|
|
|
hl.langs.python = {
|
|
|
|
|
pythonBuiltin = hl.predef.BlueItalic,
|
|
|
|
|
pythonExceptio = hl.predef.Red,
|
|
|
|
|
pythonDecoratorName = opt_italic(hl.predef.Orange, cfg.italic_enabled),
|
|
|
|
|
pythonExClass = opt_italic(hl.predef.Blue, cfg.italic_enabled),
|
|
|
|
|
pythonBuiltinType = opt_italic(hl.predef.Blue, cfg.italic_enabled),
|
|
|
|
|
pythonBuiltinObj = opt_italic(hl.predef.Orange, cfg.italic_enabled),
|
|
|
|
|
pythonDottedName = opt_italic(hl.predef.Orange, cfg.italic_enabled),
|
|
|
|
|
pythonDecoratorName = hl.predef.OrangeItalic,
|
|
|
|
|
pythonExClass = hl.predef.BlueItalic,
|
|
|
|
|
pythonBuiltinType = hl.predef.BlueItalic,
|
|
|
|
|
pythonBuiltinObj = hl.predef.OrangeItalic,
|
|
|
|
|
pythonDottedName = hl.predef.OrangeItalic,
|
|
|
|
|
pythonBuiltinFunc = hl.predef.Green,
|
|
|
|
|
pythonFunction = hl.predef.Green,
|
|
|
|
|
pythonDecorator = opt_italic(hl.predef.Orange, cfg.italic_enabled),
|
|
|
|
|
pythonDecorator = hl.predef.OrangeItalic,
|
|
|
|
|
pythonInclude = hl.syntax.Include,
|
|
|
|
|
pythonImport = hl.syntax.PreProc,
|
|
|
|
|
pythonOperator = hl.predef.Red,
|
|
|
|
|
pythonConditional = hl.predef.Red,
|
|
|
|
|
pythonRepeat = hl.predef.Red,
|
|
|
|
|
pythonException = hl.predef.Red,
|
|
|
|
|
pythonNone = opt_italic(hl.predef.Orange, cfg.italic_enabled),
|
|
|
|
|
pythonNone = hl.predef.OrangeItalic,
|
|
|
|
|
pythonCoding = hl.predef.Grey,
|
|
|
|
|
pythonDot = hl.predef.Grey
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hl.lsp = {
|
|
|
|
|
LspCxxHlSkippedRegion = hl.predef.Gray,
|
|
|
|
|
LspCxxHlSkippedRegionBeginEnd = hl.predef.Red,
|
|
|
|
|
LspCxxHlGroupEnumConstant = hl.predef.Orange,
|
|
|
|
|
LspCxxHlGroupNamespace = hl.predef.Blue,
|
|
|
|
|
LspCxxHlGroupMemberVariable = hl.predef.Orange
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hl.json = {
|
|
|
|
|
hl.langs.json = {
|
|
|
|
|
jsonKeyword = hl.predef.Red,
|
|
|
|
|
jsonString = hl.predef.Green,
|
|
|
|
|
jsonBoolean = hl.predef.Blue,
|
|
|
|
|
@@ -167,24 +174,22 @@ hl.json = {
|
|
|
|
|
jsonBraces = hl.predef.Fg
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hl.yaml = {
|
|
|
|
|
yamlKey = hl.predef.Red,
|
|
|
|
|
yamlConstant = hl.predef.BlueItalic,
|
|
|
|
|
yamlString = hl.predef.Green
|
|
|
|
|
hl.langs.yaml = {yamlKey = hl.predef.Red, yamlConstant = hl.predef.BlueItalic, yamlString = hl.predef.Green}
|
|
|
|
|
|
|
|
|
|
hl.langs.latex = {
|
|
|
|
|
texStatement = hl.predef.BlueItalic,
|
|
|
|
|
texOnlyMath = hl.predef.Grey,
|
|
|
|
|
texDefName = hl.predef.Yellow,
|
|
|
|
|
texNewCmd = hl.predef.Orange,
|
|
|
|
|
texCmdName = hl.predef.Blue,
|
|
|
|
|
texBeginEnd = hl.predef.Red,
|
|
|
|
|
texBeginEndName = hl.predef.Green,
|
|
|
|
|
texDocType = hl.predef.RedItalic,
|
|
|
|
|
ttexDocTypeArgs = hl.predef.Orange,
|
|
|
|
|
texInputFile = hl.predef.Green
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hl.git_commit = {
|
|
|
|
|
gitcommitSummary = hl.predef.Red,
|
|
|
|
|
gitcommitUntracked = hl.predef.Grey,
|
|
|
|
|
gitcommitDiscarded = hl.predef.Grey,
|
|
|
|
|
gitcommitSelected = hl.predef.Grey,
|
|
|
|
|
gitcommitUnmerged = hl.predef.Grey,
|
|
|
|
|
gitcommitOnBranch = hl.predef.Grey,
|
|
|
|
|
gitcommitArrow = hl.predef.Grey,
|
|
|
|
|
gitcommitFile = hl.predef.Green
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hl.cmake = {
|
|
|
|
|
hl.langs.cmake = {
|
|
|
|
|
cmakeCommand = hl.predef.Red,
|
|
|
|
|
cmakeKWconfigure_package_config_file = hl.predef.BlueItalic,
|
|
|
|
|
cmakeKWwrite_basic_package_version_file = hl.predef.BlueItalic,
|
|
|
|
|
@@ -291,5 +296,42 @@ hl.cmake = {
|
|
|
|
|
cmakeKWwrite_file = hl.predef.Green
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return hl
|
|
|
|
|
hl.plugins.lsp = {
|
|
|
|
|
LspCxxHlSkippedRegion = hl.predef.Gray,
|
|
|
|
|
LspCxxHlSkippedRegionBeginEnd = hl.predef.Red,
|
|
|
|
|
LspCxxHlGroupEnumConstant = hl.predef.Orange,
|
|
|
|
|
LspCxxHlGroupNamespace = hl.predef.Blue,
|
|
|
|
|
LspCxxHlGroupMemberVariable = hl.predef.Orange,
|
|
|
|
|
LspDiagnosticsDefaultError = {fg = u.color_gamma(p.red, 0.5)},
|
|
|
|
|
LspDiagnosticsDefaultWarning = {fg = u.color_gamma(p.yellow, 0.5)},
|
|
|
|
|
LspDiagnosticsDefaultInformation = {fg = u.color_gamma(p.blue, 0.5)},
|
|
|
|
|
LspDiagnosticsDefaultHint = {fg = u.color_gamma(p.purple, 0.5)},
|
|
|
|
|
LspDiagnosticsUnderlineError = {underline = true, sp = u.color_gamma(p.red, 0.5)},
|
|
|
|
|
LspDiagnosticsUnderlineWarning = {underline = true, sp = u.color_gamma(p.yellow, 0.5)},
|
|
|
|
|
LspDiagnosticsUnderlineInformation = {underline = true, sp = u.color_gamma(p.blue, 0.5)},
|
|
|
|
|
LspDiagnosticsUnderlineHint = {underline = true, sp = u.color_gamma(p.purple, 0.5)}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hl.plugins.git_commit = {
|
|
|
|
|
gitcommitSummary = hl.predef.Red,
|
|
|
|
|
gitcommitUntracked = hl.predef.Grey,
|
|
|
|
|
gitcommitDiscarded = hl.predef.Grey,
|
|
|
|
|
gitcommitSelected = hl.predef.Grey,
|
|
|
|
|
gitcommitUnmerged = hl.predef.Grey,
|
|
|
|
|
gitcommitOnBranch = hl.predef.Grey,
|
|
|
|
|
gitcommitArrow = hl.predef.Grey,
|
|
|
|
|
gitcommitFile = hl.predef.Green
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function M.setup()
|
|
|
|
|
local ns = create_namespace("tokyo")
|
|
|
|
|
load_highlights(ns, hl.predef)
|
|
|
|
|
load_highlights(ns, hl.common)
|
|
|
|
|
load_highlights(ns, hl.syntax)
|
|
|
|
|
for _, group in pairs(hl.langs) do load_highlights(ns, group) end
|
|
|
|
|
for _, group in pairs(hl.plugins) do load_highlights(ns, group) end
|
|
|
|
|
set_hl_ns(ns)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return M
|
|
|
|
|
|