dotfiles/config/nvim/lua/fs/solarized.lua

337 lines
16 KiB
Lua

local cmd = vim.cmd
local fn = vim.fn
local defaults = {
comment_italics = true,
}
local M = {
Color = require('colorbuddy.init').Color,
colors = require('colorbuddy.init').colors,
Group = require('colorbuddy.init').Group,
groups = require('colorbuddy.init').groups,
styles = require('colorbuddy.init').styles,
}
function M.setup(opts)
if not opts then opts = {} end
for k, v in pairs(defaults) do
if opts[k] == nil then opts[k] = v end
end
-- typos are annoying
for k, _ in pairs(opts) do
if defaults[k] == nil then print("neosolarized: unknown setting: ", k) end
end
cmd([[
packadd! colorbuddy.nvim
]])
-- only needed to clear when not the default colorscheme
if vim.g.colors_name then
vim.cmd("hi clear")
end
if fn.exists('syntax_on') then cmd('syntax reset') end
vim.g.colors_name = 'neosolarized'
local Color = M.Color
local colors = M.colors
local Group = M.Group
local groups = M.groups
local styles = M.styles
Color.new('base03', '#002b36')
Color.new('base02', '#073642')
Color.new('base01', '#586e75')
Color.new('base00', '#657b83')
Color.new('base0', '#839496')
Color.new('base1', '#93a1a1')
Color.new('base2', '#eee8d5')
Color.new('base3', '#fdf6e3')
Color.new('yellow', '#b58900')
Color.new('orange', '#cb4b16')
Color.new('red', '#dc322f')
Color.new('magenta', '#d33682')
Color.new('violet', '#6c71c4')
Color.new('blue', '#268bd2')
Color.new('cyan', '#2aa198')
Color.new('green', '#719e07')
Color.new('bg', colors.base03)
Group.new('Error', colors.red)
Group.new('Warning', colors.yellow)
Group.new('Information', colors.blue)
Group.new('Hint', colors.cyan)
-- normal non-current text
Group.new('Normal', colors.base0, colors.NONE, styles.NONE)
Group.new('NormalNC', colors.base0:dark(), colors.NONE, styles.NONE)
Group.new('Comment', colors.base01, colors.none, opts.comment_italics and styles.italic or styles.NONE)
Group.new('Constant', colors.cyan, colors.none, styles.NONE)
-- Any variable name, function or class name
Group.new('Identifier', colors.blue, colors.none, styles.NONE)
-- any statement, conditional, repeat (for, do while), label, operator
Group.new('Statement', colors.green, colors.none, styles.NONE)
Group.new('PreProc', colors.orange, colors.none, styles.NONE)
Group.new('Type', colors.yellow, colors.none, styles.NONE)
Group.new('Special', colors.red, colors.none, styles.NONE)
Group.new('Underlined', colors.violet, colors.none, styles.NONE)
Group.new('Ignore', colors.none, colors.none, styles.NONE)
Group.new('Error', colors.red, colors.none, styles.NONE)
Group.new('TODO', colors.magenta, colors.none, styles.bold)
Group.new('SpecialKey', colors.base00, colors.base02, styles.bold)
Group.new('NonText', colors.base00, colors.NONE, styles.bold)
Group.new('StatusLine', colors.base1, colors.base02, styles.reverse)
Group.new('StatusLineNC', colors.base00, colors.base02, styles.reverse)
Group.new('Visual', colors.base01, colors.base03, styles.reverse)
Group.new('Directory', colors.blue, colors.none, styles.NONE)
Group.new('ErrorMsg', colors.red, colors.none, styles.reverse)
Group.new('IncSearch', colors.orange, colors.none, styles.standout)
Group.new('Search', colors.yellow, colors.none, styles.reverse)
Group.new('MoreMsg', colors.blue, colors.none, styles.NONE)
Group.new('ModeMsg', colors.blue, colors.none, styles.NONE)
Group.new('Question', colors.cyan, colors.none, styles.bold)
Group.new('VertSplit', colors.base00, colors.none, styles.NONE)
Group.new('Title', colors.orange, colors.none, styles.bold)
Group.new('VisualNOS', colors.none, colors.base02, styles.reverse)
Group.new('WarningMsg', colors.red, colors.none, styles.NONE)
Group.new('WildMenu', colors.base2, colors.base02, styles.reverse)
Group.new('Folded', colors.base0, colors.base02, styles.bold, colors.base03)
Group.new('FoldColumn', colors.base0, colors.base02, styles.NONE)
Group.new('DiffAdd', colors.green, colors.base02, styles.bold, colors.green)
Group.new('DiffChange', colors.yellow, colors.base02, styles.bold, colors.yellow)
Group.new('DiffDelete', colors.red, colors.base02, styles.bold)
Group.new('DiffText', colors.blue, colors.base02, styles.bold, colors.blue)
Group.new('SignColumn', colors.base0, colors.none, styles.NONE)
Group.new('Conceal', colors.blue, colors.none, styles.NONE)
Group.new('SpellBad', colors.none, colors.none, styles.undercurl, colors.red)
Group.new('SpellCap', colors.none, colors.none, styles.undercurl, colors.violet)
Group.new('SpellRare', colors.none, colors.none, styles.undercurl, colors.cyan)
Group.new('SpellLocal', colors.none, colors.none, styles.undercurl, colors.yellow)
-- pum (popup menu)
Group.new('Pmenu', groups.Normal, colors.base02, styles.none) -- popup menu normal item
Group.new('PmenuSel', colors.base01, colors.base2, styles.reverse) -- selected item
Group.new('PmenuSbar', colors.base02, colors.none, styles.reverse)
Group.new('PmenuThumb', colors.base0, colors.none, styles.reverse)
-- be nice for this float border to be cyan if active
Group.new('FloatBorder', colors.base02)
Group.new('TabLine', colors.base0, colors.base02, styles.NONE, colors.base0)
Group.new('TabLineFill', colors.base0, colors.base02)
Group.new('TabLineSel', colors.yellow, colors.bg)
Group.new('LineNr', colors.base01, colors.none, styles.NONE)
Group.new('CursorLine', colors.none, colors.base02, styles.NONE, colors.base1)
Group.new('CursorLineNr', colors.none, colors.none, styles.NONE, colors.base1)
Group.new('ColorColumn', colors.none, colors.base02, styles.NONE)
Group.new('Cursor', colors.base03, colors.base0, styles.NONE)
Group.link('lCursor', groups.Cursor)
Group.link('TermCursor', groups.Cursor)
Group.new('TermCursorNC', colors.base03, colors.base01)
Group.new('MatchParen', colors.red, colors.base01, styles.bold)
Group.new('GitGutterAdd', colors.green)
Group.new('GitGutterChange', colors.yellow)
Group.new('GitGutterDelete', colors.red)
Group.new('GitGutterChangeDelete', colors.red)
Group.new('GitSignsAddLn', colors.green)
Group.new('GitSignsAddNr', colors.green)
Group.new('GitSignsChangeLn', colors.yellow)
Group.new('GitSignsChangeNr', colors.yellow)
Group.new('GitSignsDeleteLn', colors.red)
Group.new('GitSignsDeleteNr', colors.red)
Group.link('GitSignsCurrentLineBlame', groups.Comment)
-- vim highlighting
Group.link('vimVar', groups.Identifier)
Group.link('vimFunc', groups.Identifier)
Group.link('vimUserFunc', groups.Identifier)
Group.link('helpSpecial', groups.Special)
Group.link('vimSet', groups.Normal)
Group.link('vimSetEqual', groups.Normal)
Group.new('vimCommentString', colors.violet)
Group.new('vimCommand', colors.yellow)
Group.new('vimCmdSep', colors.blue, colors.NONE, styles.bold)
Group.new('helpExample', colors.base1)
Group.new('helpOption', colors.cyan)
Group.new('helpNote', colors.magenta)
Group.new('helpVim', colors.magenta)
Group.new('helpHyperTextJump', colors.blue, colors.NONE, styles.underline)
Group.new('helpHyperTextEntry', colors.green)
Group.new('vimIsCommand', colors.base00)
Group.new('vimSynMtchOpt', colors.yellow)
Group.new('vimSynType', colors.cyan)
Group.new('vimHiLink', colors.blue)
Group.new('vimGroup', colors.blue, colors.NONE, styles.underline + styles.bold)
Group.new('gitcommitSummary', colors.green)
Group.new('gitcommitComment', colors.base01, colors.NONE, styles.italic)
Group.link('gitcommitUntracked', groups.gitcommitComment)
Group.link('gitcommitDiscarded', groups.gitcommitComment)
Group.new('gitcommitSelected', groups.gitcommitComment)
Group.new('gitcommitUnmerged', colors.green, colors.NONE, styles.bold)
Group.new('gitcommitOnBranch', colors.base01, colors.NONE, styles.bold)
Group.new('gitcommitBranch', colors.magenta, colors.NONE, styles.bold)
Group.link('gitcommitNoBranch', groups.gitcommitBranch)
Group.new('gitcommitDiscardedType', colors.red)
Group.new('gitcommitSelectedType', colors.green)
Group.new('gitcommitHeader', colors.base01)
Group.new('gitcommitUntrackedFile', colors.cyan)
Group.new('gitcommitDiscardedFile', colors.red)
Group.new('gitcommitSelectedFile', colors.green)
Group.new('gitcommitUnmergedFile', colors.yellow)
Group.new('gitcommitFile', colors.base0)
Group.link('gitcommitDiscardedArrow', groups.gitCommitDiscardedFile)
Group.link('gitcommitSelectedArrow', groups.gitCommitSelectedFile)
Group.link('gitcommitUnmergedArrow', groups.gitCommitUnmergedFile)
Group.link('diffAdded', groups.Statement)
Group.link('diffLine', groups.Identifier)
Group.new('NeomakeErrorSign', colors.orange)
Group.new('NeomakeWarningSign', colors.yellow)
Group.new('NeomakeMessageSign', colors.cyan)
Group.new('NeomakeNeomakeInfoSign', colors.green)
Group.new('CmpItemKind', colors.green, colors.none, styles.none)
Group.new('CmpItemMenu', groups.NormalNC, colors.bg, styles.none)
-- Group.new('CmpItemAbbr', colors.base0, colors.bg, styles.none)
-- Group.new('CmpItemAbbrMatch', colors.base0, colors.bg, styles.none)
Group.new("CmpItemKindText", colors.base3, colors.none, styles.none)
Group.new("CmpItemKindMethod", colors.green, colors.none, styles.none)
Group.new("CmpItemKindFunction", colors.blue, colors.none, styles.none)
Group.new("CmpItemKindConstructor", colors.orange, colors.none, styles.none)
Group.new("CmpItemKindField", colors.yellow, colors.none, styles.none)
Group.new("CmpItemKindVariable", colors.orange, colors.none, styles.none)
Group.new("CmpitemKindClass", colors.yellow, colors.none, styles.none)
Group.new("CmpItemKindInterface", colors.yellow, colors.none, styles.none)
Group.new("CmpItemKindModule", colors.green, colors.none, styles.none)
Group.new("CmpItemKindProperty", colors.green, colors.none, styles.none)
Group.new("CmpItemKindUnit", colors.orange, colors.none, styles.none)
Group.new("CmpItemKindValue", colors.cyan, colors.none, styles.none)
Group.new("CmpItemKindEnum", colors.yellow, colors.none, styles.none)
Group.new("CmpItemKindKeyword", colors.green, colors.none, styles.none)
Group.new("CmpItemKindSnippet", colors.magenta, colors.none, styles.none)
Group.new("CmpItemKindColor", colors.magenta, colors.none, styles.none)
Group.new("CmpItemKindFile", colors.violet, colors.none, styles.none)
Group.new("CmpItemKindReference", colors.violet, colors.none, styles.none)
Group.new("CmpItemKindFolder", colors.violet, colors.none, styles.none)
Group.new("CmpItemKindEnumMember", colors.cyan, colors.none, styles.none)
Group.new("CmpItemKindConstant", colors.cyan, colors.none, styles.none)
Group.new("CmpItemKindStruct", colors.yellow, colors.none, styles.none)
Group.new("CmpItemKindEvent", colors.orange, colors.none, styles.none)
Group.new("CmpItemKindOperator", colors.cyan, colors.none, styles.none)
Group.new("CmpItemKindTypeParameter", colors.orange, colors.none, styles.none)
Group.new('LspSagaCodeActionTitle', colors.green)
Group.new('LspSagaBorderTitle', colors.yellow, colors.none, styles.bold)
Group.new('LspSagaDiagnosticHeader', colors.yellow)
Group.new('ProviderTruncateLine', colors.base02)
Group.new('LspSagaShTruncateLine', groups.ProviderTruncateLine)
Group.new('LspSagaDocTruncateLine', groups.ProviderTruncateLine)
Group.new('LspSagaCodeActionTruncateLine', groups.ProviderTruncateLine)
Group.new('LspSagaHoverBorder', colors.cyan)
Group.new('LspSagaRenameBorder', groups.LspSagaHoverBorder)
Group.new('LSPSagaDiagnosticBorder', groups.LspSagaHoverBorder)
Group.new('LspSagaSignatureHelpBorder', groups.LspSagaHoverBorder)
Group.new('LspSagaCodeActionBorder', groups.LspSagaHoverBorder)
Group.new('LspSagaLspFinderBorder', groups.LspSagaHoverBorder)
Group.new('LspSagaFloatWinBorder', groups.LspSagaHoverBorder)
Group.new('LspSagaSignatureHelpBorder', groups.LspSagaHoverBorder)
Group.new('LspSagaDefPreviewBorder', groups.LspSagaHoverBorder)
Group.new('LspSagaAutoPreviewBorder', groups.LspSagaHoverBorder)
Group.new('LspFloatWinBorder', groups.LspSagaHoverBorder)
Group.new('LspLinesDiagBorder', groups.LspSagaHoverBorder)
Group.new('LspSagaFinderSelection', colors.green, colors.none, styles.bold)
--Group.new('SagaShadow', colors.base02)
Group.new('TelescopeMatching', colors.orange, groups.Special, groups.Special, groups.Special)
Group.new('TelescopeBorder', colors.base01) -- float border not quite dark enough, maybe that needs to change?
Group.new('TelescopePromptBorder', colors.cyan) -- active border lighter for clarity
Group.new('TelescopeTitle', groups.Normal) -- separate them from the border a little, but not make them pop
Group.new('TelescopePromptPrefix', groups.Normal) -- default is groups.Identifier
Group.link('TelescopeSelection', groups.CursorLine)
Group.new('TelescopeSelectionCaret', colors.cyan)
Group.new('NeogitDiffAddHighlight', colors.blue, colors.red)
Group.new('NeogitDiffDeleteHighlight', colors.blue, colors.red)
Group.new('NeogitHunkHeader', groups.Normal, colors.base02)
Group.new('NeogitHunkHeaderHighlight', groups.Normal, colors.red)
Group.new('NeogitDiffContextHighlight', colors.base2, colors.base02)
Group.new('NeogitCommandText', groups.Normal)
Group.new('NeogitCommandTimeText', groups.Normal)
Group.new('NeogitCommandCodeNormal', groups.Normal)
Group.new('NeogitCommandCodeError', groups.Error)
Group.new('NeogitNotificationError', groups.Error, colors.none)
Group.new('NeogitNotificationInfo', groups.Information, colors.none)
Group.new('NeogitNotificationWarning', groups.Warning, colors.none)
-- seblj/nvim-tabline
Group.new('TabLineSeparatorActive', colors.cyan)
Group.link('TabLineModifiedSeparatorActive', groups.TablineSeparatorActive)
-- kevinhwang91/nvim-bqf
Group.new('BqfPreviewBorder', colors.base01)
Group.new('BqfSign', colors.cyan)
-- Primeagen/harpoon
Group.new("HarpoonBorder", colors.cyan)
Group.new("HarpoonWindow", groups.Normal)
Group.new("NvimTreeFolderIcon", colors.blue)
-- phaazon/hop.nvim
Group.link('HopNextKey', groups.IncSearch)
Group.link('HopNextKey1', groups.IncSearch)
Group.link('HopNextKey2', groups.IncSearch)
function M.translate(group)
if fn.has("nvim-0.6.0") == 0 then return group end
if not string.match(group, "^LspDiagnostics") then return group end
local translated = group
translated = string.gsub(translated, "^LspDiagnosticsDefault", "Diagnostic")
translated = string.gsub(translated, "^LspDiagnostics", "Diagnostic")
translated = string.gsub(translated, "Warning$", "Warn")
translated = string.gsub(translated, "Information$", "Info")
return translated
end
local lspColors = {
Error = groups.Error,
Warning = groups.Warning,
Information = groups.Information,
Hint = groups.Hint,
}
for _, lsp in pairs({ "Error", "Warning", "Information", "Hint" }) do
local lspGroup = Group.new(M.translate("LspDiagnosticsDefault" .. lsp), lspColors[lsp])
Group.link(M.translate("LspDiagnosticsVirtualText" .. lsp), lspGroup)
Group.new(M.translate("LspDiagnosticsUnderline" .. lsp), colors.none, colors.none, styles.undercurl, lspColors[lsp])
end
for _, name in pairs({ "LspReferenceText", "LspReferenceRead", "LspReferenceWrite" }) do
Group.link(M.translate(name), groups.CursorLine)
end
return M
end
return M