Update structure; add .lua-format; add terminal support

This commit is contained in:
2021-04-22 00:48:40 -03:00
parent a0788e4347
commit 90ffef282e
6 changed files with 169 additions and 107 deletions

View File

@@ -1,4 +1,8 @@
local cfg = {bg_transparent = true, italic_enabled = true, gamma = 1.0}
local cfg = {
transparent_background = true,
enable_italic = true,
enable_italic_comment = true,
gamma = 1.0
}
return cfg

View File

@@ -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

View File

@@ -1,22 +1,14 @@
local M = {}
local hl = require('tokyo.theme')
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 highlights = require('tokyo.highlights')
local terminal = require('tokyo.terminal')
local function colorscheme()
vim.cmd("hi clear")
if vim.fn.exists("syntax_on") then vim.cmd("syntax reset") end
vim.o.background = "dark"
vim.o.termguicolors = true
local ns = create_namespace("tokyo")
for _, group in pairs(hl) do
for group_name, group_settings in pairs(group) do
highlight(ns, group_name, group_settings)
end
end
set_hl_ns(ns)
highlights.setup()
terminal.setup()
end
function M.setup() colorscheme() end

View File

@@ -7,7 +7,7 @@ local colors = {
bg1 = '#1A1B2A',
bg2 = '#212234',
bg3 = '#392B41',
bg4 = '#32344E',
bg4 = '#4A5057',
bg_red = '#F6718A',
diff_red = '#773440',
bg_green = '#B0E973',

23
lua/tokyo/terminal.lua Normal file
View File

@@ -0,0 +1,23 @@
local M = {}
local p = require 'tokyo.palette'
function M.setup()
vim.g.terminal_color_0 = p.black
vim.g.terminal_color_1 = p.red
vim.g.terminal_color_2 = p.green
vim.g.terminal_color_3 = p.yellow
vim.g.terminal_color_4 = p.blue
vim.g.terminal_color_5 = p.purple
vim.g.terminal_color_6 = p.orange
vim.g.terminal_color_7 = p.fg
vim.g.terminal_color_8 = p.black
vim.g.terminal_color_9 = p.red
vim.g.terminal_color_10 = p.green
vim.g.terminal_color_11 = p.yellow
vim.g.terminal_color_12 = p.blue
vim.g.terminal_color_13 = p.purple
vim.g.terminal_color_14 = p.orange
vim.g.terminal_color_15 = p.fg
end
return M