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

1
.lua-format Normal file
View File

@@ -0,0 +1 @@
column_limit: 100

View File

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

View File

@@ -1,7 +1,17 @@
local p = require 'tokyo.palette' local p = require('tokyo.palette')
local function opt_italic(lhs, rhs) vim.tbl_extend('force', lhs, {italic = rhs}) end
local cfg = require('tokyo.config') 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 = { hl.predef = {
Fg = {fg = p.fg}, Fg = {fg = p.fg},
@@ -12,15 +22,19 @@ hl.predef = {
Green = {fg = p.green}, Green = {fg = p.green},
Blue = {fg = p.blue}, Blue = {fg = p.blue},
Purple = {fg = p.purple}, 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 = { hl.common = {
Normal = {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.bg_transparent 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.bg_transparent 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.bg_transparent and p.none or p.bg1}, FoldColumn = {fg = p.fg, bg = cfg.transparent_background and p.none or p.bg1},
Folded = {fg = p.fg, bg = cfg.bg_transparent 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.bg_transparent and p.none or p.bg0}, SignColumn = {fg = p.fg, bg = cfg.transparent_background and p.none or p.bg0},
ToolbarLine = {fg = p.fg}, ToolbarLine = {fg = p.fg},
Cursor = {reverse = true}, Cursor = {reverse = true},
vCursor = {reverse = true}, vCursor = {reverse = true},
@@ -31,6 +45,7 @@ hl.common = {
CursorLine = {bg = p.bg1}, CursorLine = {bg = p.bg1},
ColorColumn = {bg = p.bg1}, ColorColumn = {bg = p.bg1},
CursorLineNr = {fg = p.fg}, CursorLineNr = {fg = p.fg},
LineNr = {fg = p.bg4},
Conceal = {fg = p.grey, bg = p.bg1}, Conceal = {fg = p.grey, bg = p.bg1},
DiffAdd = {fg = p.none, bg = p.diff_green}, DiffAdd = {fg = p.none, bg = p.diff_green},
DiffChange = {fg = p.none, bg = p.diff_blue}, DiffChange = {fg = p.none, bg = p.diff_blue},
@@ -38,9 +53,9 @@ hl.common = {
DiffText = {fg = p.none, reverse = true}, DiffText = {fg = p.none, reverse = true},
Directory = {fg = p.green}, Directory = {fg = p.green},
ErrorMsg = {fg = p.red, bold = true, underline = true}, ErrorMsg = {fg = p.red, bold = true, underline = true},
WarningMsg = {fg = p.yellow, bg = p.none, bold = true}, WarningMsg = {fg = p.yellow, bold = true},
ModeMsg = {fg = p.fg, bg = p.none, bold = true}, ModeMsg = {fg = p.fg, bold = true},
MoreMsg = {fg = p.blue, bg = p.none, bold = true}, MoreMsg = {fg = p.blue, bold = true},
IncSearch = {fg = p.bg0, bg = p.bg_red}, IncSearch = {fg = p.bg0, bg = p.bg_red},
Search = {fg = p.bg0, bg = p.bg_green}, Search = {fg = p.bg0, bg = p.bg_green},
MatchParen = {fg = p.none, bg = p.bg4}, MatchParen = {fg = p.none, bg = p.bg4},
@@ -49,14 +64,14 @@ hl.common = {
SpecialKey = {fg = p.bg4}, SpecialKey = {fg = p.bg4},
Pmenu = {fg = p.fg, bg = p.bg2}, Pmenu = {fg = p.fg, bg = p.bg2},
PmenuSbar = {fg = p.none, 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}, WildMenu = {fg = p.bg0, bg = p.blue},
PmenuThumb = {fg = p.none, bg = p.grey}, PmenuThumb = {fg = p.none, bg = p.grey},
Question = {fg = p.yellow, bg = p.none}, Question = {fg = p.yellow},
SpellBad = {fg = p.red, bg = p.none, underline = true, sp = p.red}, SpellBad = {fg = p.red, underline = true, sp = p.red},
SpellCap = {fg = p.yellow, bg = p.none, underline = true, sp = p.yellow}, SpellCap = {fg = p.yellow, underline = true, sp = p.yellow},
SpellLocal = {fg = p.blue, bg = p.none, underline = true, sp = p.blue}, SpellLocal = {fg = p.blue, underline = true, sp = p.blue},
SpellRare = {fg = p.purple, bg = p.none, underline = true, sp = p.purple}, SpellRare = {fg = p.purple, underline = true, sp = p.purple},
StatusLine = {fg = p.fg, bg = p.bg3}, StatusLine = {fg = p.fg, bg = p.bg3},
StatusLineTerm = {fg = p.fg, bg = p.bg3}, StatusLineTerm = {fg = p.fg, bg = p.bg3},
StatusLineNC = {fg = p.grey, bg = p.bg1}, StatusLineNC = {fg = p.grey, bg = p.bg1},
@@ -64,53 +79,53 @@ hl.common = {
TabLine = {fg = p.fg, bg = p.bg4}, TabLine = {fg = p.fg, bg = p.bg4},
TabLineFill = {fg = p.grey, bg = p.bg1}, TabLineFill = {fg = p.grey, bg = p.bg1},
TabLineSel = {fg = p.bg0, bg = p.bg_red}, 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}, Visual = {fg = p.none, bg = p.bg3},
VisualNOS = {fg = p.none, bg = p.bg3, underline = true}, VisualNOS = {fg = p.none, bg = p.bg3, underline = true},
QuickFixLine = {fg = p.blue, bg = p.none, underline = true}, QuickFixLine = {fg = p.blue, underline = true},
Debug = {fg = p.yellow, bg = p.none}, Debug = {fg = p.yellow},
debugPC = {fg = p.bg0, bg = p.green}, debugPC = {fg = p.bg0, bg = p.green},
debugBreakpoint = {fg = p.bg0, bg = p.red}, debugBreakpoint = {fg = p.bg0, bg = p.red},
ToolbarButton = {fg = p.bg0, bg = p.bg_blue} ToolbarButton = {fg = p.bg0, bg = p.bg_blue}
} }
hl.syntax = { hl.syntax = {
Type = {fg = p.blue, italic = cfg.italic_enabled}, Type = hl.predef.BlueItalic,
Structure = {fg = p.blue, italic = cfg.italic_enabled}, Structure = hl.predef.BlueItalic,
StorageClass = {fg = p.blue, italic = cfg.italic_enabled}, StorageClass = hl.predef.BlueItalic,
Identifier = {fg = p.orange, italic = cfg.italic_enabled}, Identifier = hl.predef.OrangeItalic,
Constant = {fg = p.orange, italic = cfg.italic_enabled}, Constant = hl.predef.OrangeItalic,
PreProc = {fg = p.red}, PreProc = hl.predef.Red,
PreCondit = {fg = p.red}, PreCondit = hl.predef.Red,
Include = {fg = p.red}, Include = hl.predef.Red,
Keyword = {fg = p.red}, Keyword = hl.predef.Red,
Define = {fg = p.red}, Define = hl.predef.Red,
Typedef = {fg = p.red}, Typedef = hl.predef.Red,
Exception = {fg = p.red}, Exception = hl.predef.Red,
Conditional = {fg = p.red}, Conditional = hl.predef.Red,
Repeat = {fg = p.red}, Repeat = hl.predef.Red,
Statement = {fg = p.red}, Statement = hl.predef.Red,
Macro = {fg = p.purple}, Macro = hl.predef.Purple,
Error = {fg = p.red}, Error = hl.predef.Red,
Label = {fg = p.purple}, Label = hl.predef.Purple,
Special = {fg = p.purple}, Special = hl.predef.Purple,
SpecialChar = {fg = p.purple}, SpecialChar = hl.predef.Purple,
Boolean = {fg = p.purple}, Boolean = hl.predef.Purple,
String = {fg = p.yellow}, String = hl.predef.Yellow,
Character = {fg = p.yellow}, Character = hl.predef.Yellow,
Number = {fg = p.purple}, Number = hl.predef.Purple,
Float = {fg = p.purple}, Float = hl.predef.Purple,
Function = {fg = p.green}, Function = hl.predef.Green,
Operator = {fg = p.red}, Operator = hl.predef.Red,
Title = {fg = p.red}, Title = hl.predef.Red,
Tag = {fg = p.orange}, Tag = hl.predef.Orange,
Delimiter = {fg = p.fg}, Delimiter = hl.predef.Fg,
Comment = {fg = p.gray, italic = true}, Comment = {fg = p.bg4, italic = cfg.enable_italic_comment},
SpecialComment = {fg = p.grey}, SpecialComment = {fg = p.bg4, italic = cfg.enable_italic_comment},
Todo = {fg = p.blue} Todo = {fg = p.blue, italic = cfg.enable_italic_comment}
} }
hl.lua = { hl.langs.lua = {
luaFunc = hl.predef.Green, luaFunc = hl.predef.Green,
luaFunction = hl.predef.Red, luaFunction = hl.predef.Red,
luaTable = hl.predef.Fg, luaTable = hl.predef.Fg,
@@ -119,46 +134,38 @@ hl.lua = {
luaLocalRed = hl.predef.Red, luaLocalRed = hl.predef.Red,
luaSpecialValue = hl.predef.Green, luaSpecialValue = hl.predef.Green,
luaBraces = hl.predef.Fg, luaBraces = hl.predef.Fg,
luaBuiltIn = opt_italic(hl.predef.Blue, cfg.italic_enabled), luaBuiltIn = hl.predef.BlueItalic,
luaNoise = hl.predef.Grey, luaNoise = hl.predef.Grey,
luaLabel = hl.predef.Purple, luaLabel = hl.predef.Purple,
luaFuncTable = opt_italic(hl.predef.Blue, cfg.italic_enabled), luaFuncTable = hl.predef.BlueItalic,
luaFuncArgName = hl.predef.Fg, luaFuncArgName = hl.predef.Fg,
luaEllipsis = hl.predef.Red, luaEllipsis = hl.predef.Red,
luaDocTag = hl.predef.Green luaDocTag = hl.predef.Green
} }
hl.python = { hl.langs.python = {
pythonBuiltin = opt_italic(hl.predef.Blue, {italic = cfg.italic_enabled}), pythonBuiltin = hl.predef.BlueItalic,
pythonExceptio = hl.predef.Red, pythonExceptio = hl.predef.Red,
pythonDecoratorName = opt_italic(hl.predef.Orange, cfg.italic_enabled), pythonDecoratorName = hl.predef.OrangeItalic,
pythonExClass = opt_italic(hl.predef.Blue, cfg.italic_enabled), pythonExClass = hl.predef.BlueItalic,
pythonBuiltinType = opt_italic(hl.predef.Blue, cfg.italic_enabled), pythonBuiltinType = hl.predef.BlueItalic,
pythonBuiltinObj = opt_italic(hl.predef.Orange, cfg.italic_enabled), pythonBuiltinObj = hl.predef.OrangeItalic,
pythonDottedName = opt_italic(hl.predef.Orange, cfg.italic_enabled), pythonDottedName = hl.predef.OrangeItalic,
pythonBuiltinFunc = hl.predef.Green, pythonBuiltinFunc = hl.predef.Green,
pythonFunction = hl.predef.Green, pythonFunction = hl.predef.Green,
pythonDecorator = opt_italic(hl.predef.Orange, cfg.italic_enabled), pythonDecorator = hl.predef.OrangeItalic,
pythonInclude = hl.syntax.Include, pythonInclude = hl.syntax.Include,
pythonImport = hl.syntax.PreProc, pythonImport = hl.syntax.PreProc,
pythonOperator = hl.predef.Red, pythonOperator = hl.predef.Red,
pythonConditional = hl.predef.Red, pythonConditional = hl.predef.Red,
pythonRepeat = hl.predef.Red, pythonRepeat = hl.predef.Red,
pythonException = hl.predef.Red, pythonException = hl.predef.Red,
pythonNone = opt_italic(hl.predef.Orange, cfg.italic_enabled), pythonNone = hl.predef.OrangeItalic,
pythonCoding = hl.predef.Grey, pythonCoding = hl.predef.Grey,
pythonDot = hl.predef.Grey pythonDot = hl.predef.Grey
} }
hl.lsp = { hl.langs.json = {
LspCxxHlSkippedRegion = hl.predef.Gray,
LspCxxHlSkippedRegionBeginEnd = hl.predef.Red,
LspCxxHlGroupEnumConstant = hl.predef.Orange,
LspCxxHlGroupNamespace = hl.predef.Blue,
LspCxxHlGroupMemberVariable = hl.predef.Orange
}
hl.json = {
jsonKeyword = hl.predef.Red, jsonKeyword = hl.predef.Red,
jsonString = hl.predef.Green, jsonString = hl.predef.Green,
jsonBoolean = hl.predef.Blue, jsonBoolean = hl.predef.Blue,
@@ -167,24 +174,22 @@ hl.json = {
jsonBraces = hl.predef.Fg jsonBraces = hl.predef.Fg
} }
hl.yaml = { hl.langs.yaml = {yamlKey = hl.predef.Red, yamlConstant = hl.predef.BlueItalic, yamlString = hl.predef.Green}
yamlKey = hl.predef.Red,
yamlConstant = hl.predef.BlueItalic, hl.langs.latex = {
yamlString = hl.predef.Green 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 = { hl.langs.cmake = {
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 = {
cmakeCommand = hl.predef.Red, cmakeCommand = hl.predef.Red,
cmakeKWconfigure_package_config_file = hl.predef.BlueItalic, cmakeKWconfigure_package_config_file = hl.predef.BlueItalic,
cmakeKWwrite_basic_package_version_file = hl.predef.BlueItalic, cmakeKWwrite_basic_package_version_file = hl.predef.BlueItalic,
@@ -291,5 +296,42 @@ hl.cmake = {
cmakeKWwrite_file = hl.predef.Green 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 M = {}
local hl = require('tokyo.theme') local highlights = require('tokyo.highlights')
local terminal = require('tokyo.terminal')
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 colorscheme() local function colorscheme()
vim.cmd("hi clear") vim.cmd("hi clear")
if vim.fn.exists("syntax_on") then vim.cmd("syntax reset") end if vim.fn.exists("syntax_on") then vim.cmd("syntax reset") end
vim.o.background = "dark" vim.o.background = "dark"
vim.o.termguicolors = true vim.o.termguicolors = true
local ns = create_namespace("tokyo") highlights.setup()
for _, group in pairs(hl) do terminal.setup()
for group_name, group_settings in pairs(group) do
highlight(ns, group_name, group_settings)
end
end
set_hl_ns(ns)
end end
function M.setup() colorscheme() end function M.setup() colorscheme() end

View File

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