diff --git a/.lua-format b/.lua-format new file mode 100644 index 0000000..6218fb8 --- /dev/null +++ b/.lua-format @@ -0,0 +1 @@ +column_limit: 100 diff --git a/lua/tokyo/config.lua b/lua/tokyo/config.lua index 9c76b5a..35f1449 100644 --- a/lua/tokyo/config.lua +++ b/lua/tokyo/config.lua @@ -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 diff --git a/lua/tokyo/theme.lua b/lua/tokyo/highlights.lua similarity index 62% rename from lua/tokyo/theme.lua rename to lua/tokyo/highlights.lua index b3f2a3f..e06ed4d 100644 --- a/lua/tokyo/theme.lua +++ b/lua/tokyo/highlights.lua @@ -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 diff --git a/lua/tokyo/init.lua b/lua/tokyo/init.lua index b246a8f..d649865 100644 --- a/lua/tokyo/init.lua +++ b/lua/tokyo/init.lua @@ -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 diff --git a/lua/tokyo/palette.lua b/lua/tokyo/palette.lua index d3d2ace..1e53ba1 100644 --- a/lua/tokyo/palette.lua +++ b/lua/tokyo/palette.lua @@ -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', diff --git a/lua/tokyo/terminal.lua b/lua/tokyo/terminal.lua new file mode 100644 index 0000000..008f5e3 --- /dev/null +++ b/lua/tokyo/terminal.lua @@ -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