Merge pull request #51 from killitar/refactor
Some checks are pending
CI / extras (push) Waiting to run
CI / tests (ubuntu-latest) (push) Blocked by required conditions
CI / docs (push) Blocked by required conditions
CI / release (push) Blocked by required conditions

refactoring: split `theme.lua` into separate groups.
This commit is contained in:
Ahmed Mughal 2025-01-06 19:45:51 +05:00 committed by GitHub
commit ca970474f5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
69 changed files with 1624 additions and 1123 deletions

View file

@ -30,9 +30,25 @@ solarized_osaka.terminal = {
}
solarized_osaka.inactive = {
a = { bg = colors.bg_statusline, fg = colors.blue },
b = { bg = colors.bg_statusline, fg = colors.fg, gui = "bold" },
c = { bg = colors.bg_statusline, fg = colors.fg },
a = {
bg = config.hide_inactive_statusline and colors.none or colors.bg_statusline,
fg = config.hide_inactive_statusline and colors.bg or colors.blue,
sp = config.hide_inactive_statusline and colors.border or colors.none,
underline = config.hide_inactive_statusline,
},
b = {
bg = config.hide_inactive_statusline and colors.none or colors.bg_statusline,
fg = config.hide_inactive_statusline and colors.bg or colors.fg,
sp = config.hide_inactive_statusline and colors.border or colors.none,
underline = config.hide_inactive_statusline,
gui = "bold",
},
c = {
bg = config.hide_inactive_statusline and colors.none or colors.bg_statusline,
fg = config.hide_inactive_statusline and colors.bg or colors.fg,
sp = config.hide_inactive_statusline and colors.border or colors.none,
underline = config.hide_inactive_statusline,
},
}
if config.lualine_bold then

View file

@ -36,6 +36,19 @@ local defaults = {
---@param colors ColorScheme
on_highlights = function(highlights, colors) end,
use_background = true, -- can be light/dark/auto. When auto, background will be set to vim.o.background
---@type table<string, boolean|{enabled:boolean}>
plugins = {
-- enable all plugins when not using lazy.nvim
-- set to false to manually enable/disable plugins
all = package.loaded.lazy == nil,
-- uses your plugin manager to automatically enable needed plugins
-- currently only lazy.nvim is supported
auto = true,
-- add any plugins here that you want to enable
-- for all possible plugins, see:
-- * https://github.com/craftzdog/solarized-osaka.nvim/tree/main/lua/solarized-osaka/groups
-- flash = true,
},
}
---@type Config

View file

@ -0,0 +1,14 @@
local M = {}
function M.get(c)
-- stylua: ignore
return {
AlphaShortcut = { fg = c.orange },
AlphaHeader = { fg = c.blue },
AlphaHeaderLabel = { fg = c.orange },
AlphaFooter = { fg = c.cyan },
AlphaButtons = { fg = c.cyan },
}
end
return M

View file

@ -0,0 +1,50 @@
local Util = require("solarized-osaka.util")
local M = {}
function M.get(c, opts)
--stylua: ignore
return {
BufferCurrent = { bg = c.bg, fg = c.fg },
BufferCurrentERROR = { bg = c.bg, fg = c.error },
BufferCurrentHINT = { bg = c.bg, fg = c.hint },
BufferCurrentINFO = { bg = c.bg, fg = c.info },
BufferCurrentWARN = { bg = c.bg, fg = c.warning },
BufferCurrentIndex = { bg = c.bg, fg = c.info },
BufferCurrentMod = { bg = c.bg, fg = c.warning },
BufferCurrentSign = { bg = c.bg, fg = c.bg },
BufferCurrentTarget = { bg = c.bg, fg = c.red },
BufferAlternate = { bg = c.base01, fg = c.fg },
BufferAlternateERROR = { bg = c.base01, fg = c.error },
BufferAlternateHINT = { bg = c.base01, fg = c.hint },
BufferAlternateIndex = { bg = c.base01, fg = c.info },
BufferAlternateINFO = { bg = c.base01, fg = c.info },
BufferAlternateMod = { bg = c.base01, fg = c.warning },
BufferAlternateSign = { bg = c.base01, fg = c.info },
BufferAlternateTarget = { bg = c.base01, fg = c.red },
BufferAlternateWARN = { bg = c.base01, fg = c.warning },
BufferVisible = { bg = c.bg_statusline, fg = c.fg },
BufferVisibleERROR = { bg = c.bg_statusline, fg = c.error },
BufferVisibleHINT = { bg = c.bg_statusline, fg = c.hint },
BufferVisibleINFO = { bg = c.bg_statusline, fg = c.info },
BufferVisibleWARN = { bg = c.bg_statusline, fg = c.warning },
BufferVisibleIndex = { bg = c.bg_statusline, fg = c.info },
BufferVisibleMod = { bg = c.bg_statusline, fg = c.warning },
BufferVisibleSign = { bg = c.bg_statusline, fg = c.info },
BufferVisibleTarget = { bg = c.bg_statusline, fg = c.red },
BufferInactive = { bg = Util.darken(c.bg_highlight, 0.4), fg = Util.darken(c.violet500, 0.8) },
BufferInactiveERROR = { bg = Util.darken(c.bg_highlight, 0.4), fg = Util.darken(c.error, 0.8) },
BufferInactiveHINT = { bg = Util.darken(c.bg_highlight, 0.4), fg = Util.darken(c.hint, 0.8) },
BufferInactiveINFO = { bg = Util.darken(c.bg_highlight, 0.4), fg = Util.darken(c.info, 0.8) },
BufferInactiveWARN = { bg = Util.darken(c.bg_highlight, 0.4), fg = Util.darken(c.warning, 0.8) },
BufferInactiveIndex = { bg = Util.darken(c.bg_highlight, 0.4), fg = c.violet500 },
BufferInactiveMod = { bg = Util.darken(c.bg_highlight, 0.4), fg = Util.darken(c.warning, 0.8) },
BufferInactiveSign = { bg = Util.darken(c.bg_highlight, 0.4), fg = c.bg },
BufferInactiveTarget = { bg = Util.darken(c.bg_highlight, 0.4), fg = c.red },
BufferOffset = { bg = c.bg_statusline, fg = c.violet500 },
BufferTabpageFill = { bg = Util.darken(c.bg_highlight, 0.8), fg = c.violet500 },
BufferTabpages = { bg = c.bg_statusline, fg = c.none },
}
end
return M

View file

@ -0,0 +1,50 @@
local M = {}
function M.get(c, opts)
--stylua: ignore
return {
BlinkCmpLabel = { fg = c.fg, bg = c.none },
BlinkCmpLabelDeprecated = { fg = c.base01, bg = c.none, strikethrough = true },
--INFO: unused at the moment but passed still for future use
BlinkCmpLabelMatch = { fg = c.violet500, bg = c.none },
-- Documentation windows
BlinkCmpDoc = { fg = c.fg, bg = c.bg_float },
BlinkCmpDocBorder = { fg = c.base02, bg = c.bg_float },
BlinkCmpGhostText = { fg = c.base01 },
-- Signature help
BlinkCmpSignatureHelp = { fg = c.violet500, bg = c.none },
BlinkCmpSignatureHelpBorder = { fg = c.base02, bg = c.none },
BlinkCmpSignatureHelpActiveParameter = { fg = c.orange, bg = c.none },
-- ISSUE: passing c.none causes menu to be invisible
-- BlinkCmpMenu = { fg = c.base01, bg = c.none },
BlinkCmpMenu = { fg = c.base01, bg = c.base02 },
BlinkCmpKindDefault = { fg = c.base01, bg = c.none }, -- Default fallback
BlinkCmpKindCodeium = { fg = c.cyan500, bg = c.none },
BlinkCmpKindCopilot = { fg = c.cyan500, bg = c.none },
BlinkCmpKindTabNine = { fg = c.cyan500, bg = c.none },
BlinkCmpKindSupermaven = { fg = c.cyan500, bg = c.none },
BlinkCmpKindKeyword = { fg = c.cyan, bg = c.none },
BlinkCmpKindVariable = { fg = c.magenta, bg = c.none },
BlinkCmpKindConstant = { fg = c.magenta, bg = c.none },
BlinkCmpKindReference = { fg = c.magenta, bg = c.none },
BlinkCmpKindValue = { fg = c.magenta, bg = c.none },
BlinkCmpKindFunction = { fg = c.blue, bg = c.none },
BlinkCmpKindMethod = { fg = c.blue, bg = c.none },
BlinkCmpKindConstructor = { fg = c.blue, bg = c.none },
BlinkCmpKindClass = { fg = c.orange, bg = c.none },
BlinkCmpKindInterface = { fg = c.orange, bg = c.none },
BlinkCmpKindStruct = { fg = c.orange, bg = c.none },
BlinkCmpKindEvent = { fg = c.orange, bg = c.none },
BlinkCmpKindEnum = { fg = c.orange, bg = c.none },
BlinkCmpKindUnit = { fg = c.orange, bg = c.none },
BlinkCmpKindModule = { fg = c.yellow, bg = c.none },
BlinkCmpKindProperty = { fg = c.cyan, bg = c.none },
BlinkCmpKindField = { fg = c.cyan, bg = c.none },
BlinkCmpKindTypeParameter = { fg = c.cyan, bg = c.none },
BlinkCmpKindEnumMember = { fg = c.cyan, bg = c.none },
BlinkCmpKindOperator = { fg = c.cyan, bg = c.none },
BlinkCmpKindSnippet = { fg = c.violet500, bg = c.none },
}
end
return M

View file

@ -0,0 +1,10 @@
local M = {}
function M.get(c, opts)
--stylua: ignore
return {
BufferLineIndicatorSelected = { fg = c.yellow500 },
}
end
return M

View file

@ -0,0 +1,51 @@
local M = {}
function M.get(c, opts)
--stylua: ignore
return {
CmpDocumentation = { fg = c.fg, bg = c.bg_float },
CmpDocumentationBorder = { fg = c.base02, bg = c.bg_float },
CmpGhostText = { fg = c.base01 },
CmpItemAbbr = { fg = c.fg, bg = c.none },
CmpItemAbbrDeprecated = { fg = c.base01, bg = c.none, strikethrough = true },
CmpItemAbbrMatch = { fg = c.violet500, bg = c.none },
CmpItemAbbrMatchFuzzy = { fg = c.violet500, bg = c.none },
CmpItemMenu = { fg = c.base01, bg = c.none },
CmpItemKindDefault = { fg = c.base01, bg = c.none },
CmpItemKindCodeium = { fg = c.cyan500, bg = c.none },
CmpItemKindCopilot = { fg = c.cyan500, bg = c.none },
CmpItemKindTabNine = { fg = c.cyan500, bg = c.none },
CmpItemKindKeyword = { fg = c.cyan, bg = c.none },
CmpItemKindVariable = { fg = c.magenta, bg = c.none },
CmpItemKindConstant = { fg = c.magenta, bg = c.none },
CmpItemKindReference = { fg = c.magenta, bg = c.none },
CmpItemKindValue = { fg = c.magenta, bg = c.none },
CmpItemKindFunction = { fg = c.blue, bg = c.none },
CmpItemKindMethod = { fg = c.blue, bg = c.none },
CmpItemKindConstructor = { fg = c.blue, bg = c.none },
CmpItemKindClass = { fg = c.orange, bg = c.none },
CmpItemKindInterface = { fg = c.orange, bg = c.none },
CmpItemKindStruct = { fg = c.orange, bg = c.none },
CmpItemKindEvent = { fg = c.orange, bg = c.none },
CmpItemKindEnum = { fg = c.orange, bg = c.none },
CmpItemKindUnit = { fg = c.orange, bg = c.none },
CmpItemKindModule = { fg = c.yellow, bg = c.none },
CmpItemKindProperty = { fg = c.cyan, bg = c.none },
CmpItemKindField = { fg = c.cyan, bg = c.none },
CmpItemKindTypeParameter = { fg = c.cyan, bg = c.none },
CmpItemKindEnumMember = { fg = c.cyan, bg = c.none },
CmpItemKindOperator = { fg = c.cyan, bg = c.none },
CmpItemKindSnippet = { fg = c.violet500, bg = c.none },
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
DashboardShortCut = { fg = c.cyan },
DashboardHeader = { fg = c.blue },
DashboardCenter = { fg = c.magenta },
DashboardFooter = { fg = c.yellow, italic = true },
DashboardKey = { fg = c.orange500 },
DashboardDesc = { fg = c.cyan500 },
DashboardIcon = { fg = c.cyan500, bold = true },
}
end
return M

View file

@ -0,0 +1,113 @@
local M = {}
function M.get(c, options)
-- stylua: ignore
return {
ColorColumn = { bg = c.base02 }, -- used for the columns set with 'colorcolumn'
Conceal = { fg = c.blue500 }, -- placeholder characters substituted for concealed text (see 'conceallevel')
Cursor = { fg = c.base03, bg = c.base0 }, -- character under the cursor
lCursor = { fg = c.base03, bg = c.base00 }, -- the character under the cursor when |language-mapping| is used (see 'guicursor')
CursorIM = { fg = c.base03, bg = c.base0 }, -- like Cursor, but used when in IME mode |CursorIM|
CursorColumn = { bg = c.base02 }, -- Screen-column at the cursor, when 'cursorcolumn' is set.
CursorLine = { bg = c.base03, sp = c.base1 }, -- Screen-line at the cursor, when 'cursorline' is set. Low-priority if foreground (ctermfg OR guifg) is not set.
Directory = { fg = c.blue500 }, -- directory names (and other special names in listings)
DiffAdd = { fg = c.green500, bg = c.base02, bold = true }, -- diff mode: Added line |diff.txt|
DiffChange = { fg = c.yellow500, bg = c.base02, bold = true }, -- diff mode: Changed line |diff.txt|
DiffDelete = { fg = c.red500, bg = c.base02, bold = true }, -- diff mode: Deleted line |diff.txt|
DiffText = { fg = c.blue500, bg = c.base02, bold = true }, -- diff mode: Changed text within a changed line |diff.txt|
EndOfBuffer = { fg = c.base01 }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|.
-- TermCursor = { }, -- cursor in a focused terminal
-- TermCursorNC= { }, -- cursor in an unfocused terminal
ErrorMsg = { fg = c.red500, reverse = true }, -- error messages on the command line
VertSplit = { fg = c.base00 }, -- the column separating vertically split windows
WinSeparator = { fg = c.base02, bold = true }, -- the column separating vertically split windows
Folded = { fg = c.base0, bg = c.base02, bold = true }, -- line used for closed folds
FoldColumn = { fg = c.base0 }, -- 'foldcolumn'
SignColumn = { fg = c.base0 }, -- column where |signs| are displayed
SignColumnSB = { fg = c.base0 }, -- column where |signs| are displayed
Substitute = { fg = c.base04, bg = c.red500 }, -- |:substitute| replacement text highlighting
LineNr = { fg = c.yellow700, bg = options.transparent and c.none or c.bg }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
CursorLineNr = { fg = c.orange500, sp = c.base1 }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
MatchParen = { fg = c.red100, bg = c.red500, bold = true }, -- The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt|
ModeMsg = { fg = c.blue500 }, -- 'showmode' message (e.g., "-- INSERT -- ")
MsgArea = { fg = c.base01 }, -- Area for messages and cmdline
-- MsgSeparator= { }, -- Separator for scrolled messages, `msgsep` flag of 'display'
MoreMsg = { fg = c.blue500 }, -- |more-prompt|
NonText = { fg = c.base00, bold = true }, -- '@' at the end of the window, characters from 'showbreak' and other characters that do not really exist in the text (e.g., ">" displayed when a double-wide character doesn't fit at the end of the line). See also |hl-EndOfBuffer|.
Normal = { fg = c.base0, bg = options.transparent and c.none or c.bg }, -- normal text
NormalNC = { fg = c.base00, bg = options.transparent and c.none or options.dim_inactive and c.base04 or c.bg }, -- normal text in non-current windows
NormalSB = { fg = c.base01, bg = c.bg_sidebar }, -- normal text in sidebar
NormalFloat = { fg = c.base0, bg = c.bg_float }, -- Normal text in floating windows.
FloatBorder = { fg = c.yellow700, bg = c.bg_float },
FloatTitle = { fg = c.base2, bg = c.bg_float },
Pmenu = { fg = c.base0, bg = c.base02 }, -- Popup menu: normal item.
PmenuSel = { fg = c.base01, bg = c.base2, reverse = true }, -- Popup menu: selected item.
PmenuSbar = { fg = c.base02, reverse = true }, -- Popup menu: scrollbar.
PmenuThumb = { fg = c.base0, reverse = true }, -- Popup menu: Thumb of the scrollbar.
Question = { fg = c.cyan500, bold = true }, -- |hit-enter| prompt and yes/no questions
QuickFixLine = { bg = c.blue700, bold = true }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there.
Search = { fg = c.yellow500, reverse = true }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
IncSearch = { fg = c.base2, bg = c.orange500 }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
CurSearch = "IncSearch",
SpecialKey = { fg = c.base00 }, -- Unprintable characters: text displayed differently from what it really is. But not 'listchars' whitespace. |hl-Whitespace|
SpellBad = { sp = c.red500, undercurl = true }, -- Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise.
SpellCap = { sp = c.violet500, undercurl = true }, -- Word that should start with a capital. |spell| Combined with the highlighting used otherwise.
SpellLocal = { sp = c.cyan500, undercurl = true }, -- Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise.
SpellRare = { sp = c.yellow500, undercurl = true }, -- Word that is recognized by the spellchecker as one that is hardly ever used. |spell| Combined with the highlighting used otherwise.
StatusLine = { fg = c.base1, bg = c.base03 }, -- status line of current window
StatusLineNC = { fg = options.hide_inactive_statusline and c.bg or c.base0, bg = options.hide_inactive_statusline and c.none or c.base04, sp = options.hide_inactive_statusline and c.border or c.none, underline = options.hide_inactive_statusline and true or false }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window.
TabLine = { fg = c.base0, bg = c.base02, sp = c.base0 }, -- tab pages line, not active tab page label
TabLineFill = { fg = c.base0, bg = c.base02 }, -- tab pages line, where there are no labels
TabLineSel = { fg = c.yellow500, bg = c.bg }, -- tab pages line, active tab page label
Title = { fg = c.orange500, bold = true }, -- titles for output from ":set all", ":autocmd" etc.
Visual = { bg = c.base02 }, -- Visual mode selection
VisualNOS = { bg = c.base03, reverse = true }, -- Visual mode selection when vim is "Not Owning the Selection".
WarningMsg = { fg = c.orange500, bold = true }, -- warning messages
Whitespace = { fg = c.base01 }, -- "nbsp", "space", "tab" and "trail" in 'listchars'
WildMenu = { fg = c.base2, bg = c.base02, reverse = true }, -- current match in 'wildmenu' completion
WinBar = "StatusLine", -- window bar
WinBarNC = "StatusLineNC", -- window bar in inactive windows
-- These groups are for the native LSP client. Some other LSP clients may
-- use these groups, or use their own. Consult your LSP client's
-- documentation.
LspReferenceText = { bg = c.magenta900 }, -- used for highlighting "text" references
LspReferenceRead = { bg = c.magenta900 }, -- used for highlighting "read" references
LspReferenceWrite = { bg = c.magenta900 }, -- used for highlighting "write" references
LspSignatureActiveParameter = { bg = c.base03, bold = true },
LspCodeLens = { fg = c.base01 },
LspInlayHint = { bg = c.violet900, fg = c.violet500 },
LspInfoBorder = { fg = c.base02, bg = c.bg_float },
DiagnosticError = { fg = c.error }, -- Used as the base highlight group. Other Diagnostic highlights link to this by default
DiagnosticWarn = { fg = c.warning }, -- Used as the base highlight group. Other Diagnostic highlights link to this by default
DiagnosticInfo = { fg = c.info }, -- Used as the base highlight group. Other Diagnostic highlights link to this by default
DiagnosticHint = { fg = c.hint }, -- Used as the base highlight group. Other Diagnostic highlights link to this by default
DiagnosticUnnecessary = { fg = c.base00 }, -- Used as the base highlight group. Other Diagnostic highlights link to this by default
DiagnosticVirtualTextError = { bg = c.red900, fg = c.red500 }, -- Used for "Error" diagnostic virtual text
DiagnosticVirtualTextWarn = { bg = c.yellow900, fg = c.yellow500 }, -- Used for "Warning" diagnostic virtual text
DiagnosticVirtualTextInfo = { bg = c.blue900, fg = c.blue500 }, -- Used for "Information" diagnostic virtual text
DiagnosticVirtualTextHint = { bg = c.cyan900, fg = c.cyan500 }, -- Used for "Hint" diagnostic virtual text
DiagnosticUnderlineError = { undercurl = true, sp = c.error }, -- Used to underline "Error" diagnostics
DiagnosticUnderlineWarn = { undercurl = true, sp = c.warning }, -- Used to underline "Warning" diagnostics
DiagnosticUnderlineInfo = { undercurl = true, sp = c.info }, -- Used to underline "Information" diagnostics
DiagnosticUnderlineHint = { undercurl = true, sp = c.hint }, -- Used to underline "Hint" diagnostics
healthError = { fg = c.error },
healthSuccess = { fg = c.cyan },
healthWarning = { fg = c.warning },
diffAdded = { fg = c.green500 },
diffRemoved = { fg = c.red500 },
diffChanged = { fg = c.yellow500 },
diffOldFile = { fg = c.violet500 },
diffNewFile = { fg = c.orange500 },
diffFile = { fg = c.blue500 },
diffLine = { fg = c.base01 },
diffIndexLine = { fg = c.magenta500 },
}
end
return M

View file

@ -0,0 +1,10 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
FernBranchText = { fg = c.blue },
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
function M.get(c)
-- stylua: ignore
return {
FlashBackdrop = { fg = c.base01 },
FlashLabel = { bg = c.magenta500, bold = true, fg = c.bg },
}
end
return M

View file

@ -0,0 +1,18 @@
local M = {}
function M.get(c, opts)
--stylua: ignore
return {
FzfLuaNormal = { fg = c.base0, bg = c.bg_float },
FzfLuaBorder = { fg = c.base02, bg = c.bg_float },
FzfLuaCursor = "IncSearch",
FzfLuaFzfCursorLine = "CursorLine",
FzfLuaPath = "Directory",
FzfLuaHeaderText = "Title",
FzfLuaHeaderBind = { fg = c.yellow, bg = c.bg_float },
FzfLuaPreviewTitle = { fg = c.blue, bg = c.bg_float },
FzfLuaTitle = { fg = c.orange, bg = c.bg_float },
}
end
return M

View file

@ -0,0 +1,15 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
GitGutterAdd = { fg = c.green500 }, -- diff mode: Added line |diff.txt|
GitGutterChange = { fg = c.yellow500 }, -- diff mode: Changed line |diff.txt|
GitGutterDelete = { fg = c.red500 }, -- diff mode: Deleted line |diff.txt|
GitGutterAddLineNr = { fg = c.green500 },
GitGutterChangeLineNr = { fg = c.yellow500 },
GitGutterDeleteLineNr = { fg = c.red500 },
}
end
return M

View file

@ -0,0 +1,12 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
GitSignsAdd = { fg = c.green500 }, -- diff mode: Added line |diff.txt|
GitSignsChange = { fg = c.yellow500 }, -- diff mode: Changed line |diff.txt|
GitSignsDelete = { fg = c.red500 }, -- diff mode: Deleted line |diff.txt|
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
GlyphPalette1 = { fg = c.red500 },
GlyphPalette2 = { fg = c.green },
GlyphPalette3 = { fg = c.yellow },
GlyphPalette4 = { fg = c.blue },
GlyphPalette6 = { fg = c.cyan },
GlyphPalette7 = { fg = c.fg },
GlyphPalette9 = { fg = c.red },
}
end
return M

View file

@ -0,0 +1,13 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
HopNextKey = { fg = c.magenta500, bold = true },
HopNextKey1 = { fg = c.violet500, bold = true },
HopNextKey2 = { fg = c.violet700 },
HopUnmatched = { fg = c.base01 },
}
end
return M

View file

@ -0,0 +1,14 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
illuminatedWord = { bg = c.violet900 },
illuminatedCurWord = { bg = c.violet900 },
IlluminatedWordText = { bg = c.violet900 },
IlluminatedWordRead = { bg = c.magenta900 },
IlluminatedWordWrite = { bg = c.magenta900 },
}
end
return M

View file

@ -0,0 +1,12 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
IblIndent = { fg = c.base03, nocombine = true },
IndentBlanklineChar = { fg = c.base03, nocombine = true },
IndentBlanklineContextChar = { fg = c.orange500, nocombine = true },
}
end
return M

View file

@ -0,0 +1,135 @@
local Util = require("solarized-osaka.util")
local M = {}
-- stylua: ignore
M.plugins = {
["alpha-nvim"] = "alpha",
["barbar.nvim"] = "barbar",
["bufferline.nvim"] = "bufferline",
["blink.cmp"] = "blink",
["dashboard-nvim"] = "dashboard",
["flash.nvim"] = "flash",
["fzf-lua"] = "fzf",
["vim-fern"] = "fern",
["gitsigns.nvim"] = "gitsigns",
["hop.nvim"] = "hop",
["indent-blankline.nvim"] = "indent-blankline",
["leap.nvim"] = "leap",
["lspsaga.nvim"] = "lspsaga",
["lightspeed"] = "lightspeed",
["mini.animate"] = "mini_animate",
["mini.clue"] = "mini_clue",
["mini.completion"] = "mini_completion",
["mini.cursorword"] = "mini_cursorword",
["mini.deps"] = "mini_deps",
["mini.diff"] = "mini_diff",
["mini.files"] = "mini_files",
["mini.hipatterns"] = "mini_hipatterns",
["mini.icons"] = "mini_icons",
["mini.indentscope"] = "mini_indentscope",
["mini.jump"] = "mini_jump",
["mini.map"] = "mini_map",
["mini.notify"] = "mini_notify",
["mini.operators"] = "mini_operators",
["mini.pick"] = "mini_pick",
["mini.starter"] = "mini_starter",
["mini.statusline"] = "mini_statusline",
["mini.surround"] = "mini_surround",
["mini.tabline"] = "mini_tabline",
["mini.test"] = "mini_test",
["mini.trailspace"] = "mini_trailspace",
["neo-tree.nvim"] = "neo-tree",
["neogit"] = "neogit",
["neotest"] = "neotest",
["noice.nvim"] = "noice",
["nvim-cmp"] = "cmp",
["nvim-navic"] = "navic",
["nvim-notify"] = "notify",
["nvim-scrollbar"] = "scrollbar",
["nvim-tree.lua"] = "nvim-tree",
["nvim-treesitter-context"] = "treesitter-context",
["nvim-ts-rainbow"] = "nvim-ts-rainbow",
["nvim-ts-rainbow2"] = "nvim-ts-rainbow2",
["ts-node-action"] = "ts-node-action",
["rainbow-delimiters.nvim"] = "rainbow-delimiters",
["snacks.nvim"] = "snacks",
["telescope.nvim"] = "telescope",
["trouble.nvim"] = "trouble",
["vim-gitgutter"] = "gitgutter",
["vim-glyph-palette"] = "glyph-palette",
["vim-illuminate"] = "illuminate",
["vim-sneak"] = "sneak",
["which-key.nvim"] = "which-key",
["yanky.nvim"] = "yanky"
}
function M.get_group(name)
return Util.mod("solarized-osaka.groups." .. name)
end
function M.get(name, colors, opts)
local mod = M.get_group(name)
return mod.get(colors, opts)
end
function M.setup(colors, opts)
local groups = {
editor = true,
syntax = true,
semantic_tokens = true,
treesitter = true,
}
if opts.plugins.all then
for _, group in pairs(M.plugins) do
groups[group] = true
end
elseif opts.plugins.auto and package.loaded.lazy then
local plugins = require("lazy.core.config").plugins
for plugin, group in pairs(M.plugins) do
if plugins[plugin] then
groups[group] = true
end
end
-- special case for mini.nvim
if plugins["mini.nvim"] then
for _, group in pairs(M.plugins) do
if group:find("^mini_") then
groups[group] = true
end
end
end
end
-- manually enable/disable plugins
for plugin, group in pairs(M.plugins) do
local use = opts.plugins[group]
use = use == nil and opts.plugins[plugin] or use
if use ~= nil then
if type(use) == "table" then
use = use.enabled
end
groups[group] = use or nil
end
end
local names = vim.tbl_keys(groups)
table.sort(names)
local ret = {}
for group in pairs(groups) do
for k, v in pairs(M.get(group, colors, opts)) do
ret[k] = v
end
end
Util.resolve(ret)
opts.on_highlights(ret, colors)
return ret, groups
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
LazyProgressDone = { bold = true, fg = c.magenta500 },
LazyProgressTodo = { bold = true, fg = c.base01 },
}
end
return M

View file

@ -0,0 +1,12 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
LeapMatch = { bg = c.magenta500, fg = c.fg, bold = true },
LeapLabel = { fg = c.magenta500, bold = true },
LeapBackdrop = { fg = c.base01 },
}
end
return M

View file

@ -0,0 +1,22 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
LightspeedGreyWash = { fg = c.base01 },
-- LightspeedCursor = { link = "Cursor" },
LightspeedLabel = { fg = c.magenta500, bold = true, underline = true },
LightspeedLabelDistant = { fg = c.cyan, bold = true, underline = true },
LightspeedLabelDistantOverlapped = { fg = c.cyan500, underline = true },
LightspeedLabelOverlapped = { fg = c.magenta500, underline = true },
LightspeedMaskedChar = { fg = c.orange },
LightspeedOneCharMatch = { bg = c.magenta500, fg = c.fg, bold = true },
LightspeedPendingOpArea = { bg = c.magenta500, fg = c.fg },
LightspeedShortcut = { bg = c.magenta500, fg = c.fg, bold = true, underline = true },
-- LightspeedShortcutOverlapped = { link = "LightspeedShortcut" },
-- LightspeedUniqueChar = { link = "LightspeedUnlabeledMatch" },
LightspeedUnlabeledMatch = { fg = c.violet500, bold = true },
}
end
return M

View file

@ -0,0 +1,27 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
DiagnosticWarning = "DiagnosticWarn",
DiagnosticInformation = "DiagnosticInfo",
LspFloatWinNormal = { bg = c.bg_float },
LspFloatWinBorder = { fg = c.base02 },
LspSagaBorderTitle = { fg = c.cyan },
LspSagaHoverBorder = { fg = c.blue },
LspSagaRenameBorder = { fg = c.green },
LspSagaDefPreviewBorder = { fg = c.green },
LspSagaCodeActionBorder = { fg = c.blue },
LspSagaFinderSelection = { fg = c.base03 },
LspSagaCodeActionTitle = { fg = c.cyan },
LspSagaCodeActionContent = { fg = c.violet500 },
LspSagaSignatureHelpBorder = { fg = c.red },
ReferencesCount = { fg = c.violet500 },
DefinitionCount = { fg = c.violet500 },
DefinitionIcon = { fg = c.blue },
ReferencesIcon = { fg = c.blue },
TargetWord = { fg = c.cyan500 },
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniAnimateCursor = { reverse = true, nocombine = true },
MiniAnimateNormalFloat = "NormalFloat",
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniClueBorder = "FloatBorder",
MiniClueDescGroup = "DiagnosticFloatingWarn",
MiniClueDescSingle = "NormalFloat",
MiniClueNextKey = "DiagnosticFloatingHint",
MiniClueNextKeyWithPostkeys = "DiagnosticFloatingError",
MiniClueSeparator = "DiagnosticFloatingInfo",
MiniClueTitle = "FloatTitle",
}
end
return M

View file

@ -0,0 +1,10 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniCompletionActiveParameter = "LspSignatureActiveParameter",
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniCursorword = { underline = true },
MiniCursorwordCurrent = { underline = true },
}
end
return M

View file

@ -0,0 +1,19 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniDepsChangeAdded = "diffAdded",
MiniDepsChangeRemoved = "diffRemoved",
MiniDepsHint = "DiagnosticHint",
MiniDepsInfo = "DiagnosticInfo",
MiniDepsMsgBreaking = "DiagnosticWarn",
MiniDepsPlaceholder = "Comment",
MiniDepsTitle = "Title",
MiniDepsTitleError = "DiffDelete",
MiniDepsTitleSame = "DiffText",
MiniDepsTitleUpdate = "DiffAdd",
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniDiffOverAdd = "DiffAdd",
MiniDiffOverChange = "DiffText",
MiniDiffOverContext = "DiffChange",
MiniDiffOverDelete = "DiffDelete",
MiniDiffSignAdd = { fg = c.green500 },
MiniDiffSignChange = { fg = c.yellow500 },
MiniDiffSignDelete = { fg = c.red500 },
}
end
return M

View file

@ -0,0 +1,17 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniFilesBorder = "FloatBorder",
MiniFilesBorderModified = "DiagnosticFloatingWarn",
MiniFilesCursorLine = "CursorLine",
MiniFilesDirectory = "Directory",
MiniFilesFile = { fg = c.fg },
MiniFilesNormal = "NormalFloat",
MiniFilesTitle = "FloatTitle",
MiniFilesTitleFocused = { fg = c.hint, bg = c.bg_float },
}
end
return M

View file

@ -0,0 +1,13 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniHipatternsFixme = { fg = c.bg, bg = c.error, bold = true },
MiniHipatternsHack = { fg = c.bg, bg = c.warning, bold = true },
MiniHipatternsNote = { fg = c.bg, bg = c.info, bold = true },
MiniHipatternsTodo = { fg = c.bg, bg = c.hint, bold = true },
}
end
return M

View file

@ -0,0 +1,18 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniIconsAzure = { fg = c.blue300 },
MiniIconsBlue = { fg = c.blue },
MiniIconsCyan = { fg = c.cyan },
MiniIconsGreen = { fg = c.green },
MiniIconsGrey = { fg = c.base2 },
MiniIconsOrange = { fg = c.orange },
MiniIconsPurple = { fg = c.violet },
MiniIconsRed = { fg = c.red },
MiniIconsYellow = { fg = c.yellow },
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniIndentscopeSymbol = { fg = c.violet700, nocombine = true },
MiniIndentscopeSymbolOff = { fg = c.warning, nocombine = true },
}
end
return M

View file

@ -0,0 +1,14 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniJump = { bg = c.magenta500, fg = c.base4 },
MiniJump2dDim = { fg = c.base01 },
MiniJump2dSpot = { fg = c.magenta500, bold = true, nocombine = true },
MiniJump2dSpotAhead = { fg = c.cyan500, bg = c.black, nocombine = true },
MiniJump2dSpotUnique = { fg = c.yellow500, bold = true, nocombine = true },
}
end
return M

View file

@ -0,0 +1,13 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniMapNormal = "NormalFloat",
MiniMapSymbolCount = "Special",
MiniMapSymbolLine = "Title",
MiniMapSymbolView = "Delimiter",
}
end
return M

View file

@ -0,0 +1,12 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniNotifyBorder = "FloatBorder",
MiniNotifyNormal = "NormalFloat",
MiniNotifyTitle = "FloatTitle",
}
end
return M

View file

@ -0,0 +1,10 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniOperatorsExchangeFrom = "IncSearch",
}
end
return M

View file

@ -0,0 +1,22 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniPickBorder = "FloatBorder",
MiniPickBorderBusy = "DiagnosticFloatingWarn",
MiniPickBorderText = "FloatTitle",
MiniPickHeader = "DiagnosticFloatingHint",
MiniPickIconDirectory = "Directory",
MiniPickIconFile = "MiniPickNormal",
MiniPickMatchCurrent = "CursorLine",
MiniPickMatchMarked = "Visual",
MiniPickMatchRanges = "DiagnosticFloatingHint",
MiniPickNormal = "NormalFloat",
MiniPickPreviewLine = "CursorLine",
MiniPickPreviewRegion = "IncSearch",
MiniPickPrompt = "DiagnosticFloatingInfo",
}
end
return M

View file

@ -0,0 +1,18 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniStarterCurrent = { nocombine = true },
MiniStarterFooter = { fg = c.yellow, italic = true },
MiniStarterHeader = { fg = c.blue },
MiniStarterInactive = { fg = c.base01, style = opts.styles.comments },
MiniStarterItem = { fg = c.fg, bg = opts.transparent and c.none or c.bg },
MiniStarterItemBullet = { fg = c.base01 },
MiniStarterItemPrefix = { fg = c.warning },
MiniStarterSection = { fg = c.violet500 },
MiniStarterQuery = { fg = c.info },
}
end
return M

View file

@ -0,0 +1,19 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniStatuslineDevinfo = { fg = c.base01, bg = c.bg_highlight },
MiniStatuslineFileinfo = { fg = c.base01, bg = c.bg_highlight },
MiniStatuslineFilename = { fg = c.base01, bg = c.bg_highlight },
MiniStatuslineInactive = { fg = opts.hide_inactive_statusline and c.bg or c.blue, bg = opts.hide_inactive_statusline and c.none or c.bg_statusline, sp = opts.hide_inactive_statusline and c.border or c.none, underline = opts.hide_inactive_statusline },
MiniStatuslineModeCommand = { fg = c.black, bg = c.yellow, bold = true },
MiniStatuslineModeInsert = { fg = c.black, bg = c.green, bold = true },
MiniStatuslineModeNormal = { fg = c.black, bg = c.blue, bold = true },
MiniStatuslineModeOther = { fg = c.black, bg = c.cyan500, bold = true },
MiniStatuslineModeReplace = { fg = c.black, bg = c.red, bold = true },
MiniStatuslineModeVisual = { fg = c.black, bg = c.magenta, bold = true },
}
end
return M

View file

@ -0,0 +1,10 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniSurround = { bg = c.orange, fg = c.black },
}
end
return M

View file

@ -0,0 +1,17 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniTablineCurrent = { fg = c.fg, bg = c.base02, bold = true },
MiniTablineFill = { bg = c.black },
MiniTablineHidden = { fg = c.violet500, bg = c.bg_statusline },
MiniTablineModifiedCurrent = { fg = c.base02, bg = c.fg, bold = true },
MiniTablineModifiedHidden = { fg = c.bg_statusline, bg = c.violet500 },
MiniTablineModifiedVisible = { fg = c.bg_statusline, bg = c.fg },
MiniTablineTabpagesection = { bg = c.bg_statusline, fg = c.none },
MiniTablineVisible = { fg = c.fg, bg = c.bg_statusline },
}
end
return M

View file

@ -0,0 +1,12 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniTestEmphasis = { bold = true },
MiniTestFail = { fg = c.red, bold = true },
MiniTestPass = { fg = c.green, bold = true },
}
end
return M

View file

@ -0,0 +1,10 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
MiniTrailspace = { bg = c.red },
}
end
return M

View file

@ -0,0 +1,38 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
NavicIconsFile = { fg = c.fg, bg = c.bg_statusline },
NavicIconsModule = { fg = c.yellow, bg = c.bg_statusline },
NavicIconsNamespace = { fg = c.fg, bg = c.bg_statusline },
NavicIconsPackage = { fg = c.fg, bg = c.bg_statusline },
NavicIconsClass = { fg = c.orange, bg = c.bg_statusline },
NavicIconsMethod = { fg = c.blue, bg = c.bg_statusline },
NavicIconsProperty = { fg = c.cyan, bg = c.bg_statusline },
NavicIconsField = { fg = c.cyan, bg = c.bg_statusline },
NavicIconsConstructor = { fg = c.orange, bg = c.bg_statusline },
NavicIconsEnum = { fg = c.orange, bg = c.bg_statusline },
NavicIconsInterface = { fg = c.orange, bg = c.bg_statusline },
NavicIconsFunction = { fg = c.blue, bg = c.bg_statusline },
NavicIconsVariable = { fg = c.magenta, bg = c.bg_statusline },
NavicIconsConstant = { fg = c.magenta, bg = c.bg_statusline },
NavicIconsString = { fg = c.green, bg = c.bg_statusline },
NavicIconsNumber = { fg = c.orange, bg = c.bg_statusline },
NavicIconsBoolean = { fg = c.orange, bg = c.bg_statusline },
NavicIconsArray = { fg = c.orange, bg = c.bg_statusline },
NavicIconsObject = { fg = c.orange, bg = c.bg_statusline },
NavicIconsKey = { fg = c.violet500, bg = c.bg_statusline },
NavicIconsKeyword = { fg = c.violet500, bg = c.bg_statusline },
NavicIconsNull = { fg = c.orange, bg = c.bg_statusline },
NavicIconsEnumMember = { fg = c.cyan, bg = c.bg_statusline },
NavicIconsStruct = { fg = c.orange, bg = c.bg_statusline },
NavicIconsEvent = { fg = c.orange, bg = c.bg_statusline },
NavicIconsOperator = { fg = c.fg, bg = c.bg_statusline },
NavicIconsTypeParameter = { fg = c.cyan, bg = c.bg_statusline },
NavicText = { fg = c.fg, bg = c.bg_statusline },
NavicSeparator = { fg = c.fg, bg = c.bg_statusline },
}
end
return M

View file

@ -0,0 +1,13 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
NeoTreeNormal = { fg = c.base00, bg = c.bg_sidebar },
NeoTreeNormalNC = { fg = c.base00, bg = c.bg_sidebar },
NeoTreeDimText = { fg = c.base01 },
NeoTreeMessage = { fg = c.base01 },
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
NeogitBranch = { fg = c.magenta500 },
NeogitRemote = { fg = c.violet500 },
NeogitHunkHeader = { fg = c.base0, bg = c.base02 },
NeogitHunkHeaderHighlight = { fg = c.blue500, bg = c.base02 },
NeogitDiffContextHighlight = { fg = c.base00, bg = c.base02 },
NeogitDiffDeleteHighlight = { fg = c.red500, bg = c.red900 },
NeogitDiffAddHighlight = { fg = c.green500, bg = c.green900 },
}
end
return M

View file

@ -0,0 +1,26 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
NeotestPassed = { fg = c.green500 },
NeotestRunning = { fg = c.yellow500 },
NeotestFailed = { fg = c.red500 },
NeotestSkipped = { fg = c.blue500 },
NeotestTest = { fg = c.base00 },
NeotestNamespace = { fg = c.cyan500 },
NeotestFocused = { fg = c.yellow500 },
NeotestFile = { fg = c.cyan500 },
NeotestDir = { fg = c.blue500 },
NeotestBorder = { fg = c.blue500 },
NeotestIndent = { fg = c.base00 },
NeotestExpandMarker = { fg = c.base0 },
NeotestAdapterName = { fg = c.violet500, bold = true },
NeotestWinSelect = { fg = c.blue500 },
NeotestMarked = { fg = c.blue500 },
NeotestTarget = { fg = c.blue500 },
--[[ NeotestUnknown = {}, ]]
}
end
return M

View file

@ -0,0 +1,10 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
NoiceCompletionItemKindDefault = { fg = c.base01, bg = c.none },
}
end
return M

View file

@ -0,0 +1,36 @@
local Util = require("solarized-osaka.util")
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
NotifyBackground = { fg = c.fg, bg = c.bg },
--- Border
NotifyERRORBorder = { fg = Util.darken(c.error, 0.3), bg = opts.transparent and c.none or c.bg },
NotifyWARNBorder = { fg = Util.darken(c.warning, 0.3), bg = opts.transparent and c.none or c.bg },
NotifyINFOBorder = { fg = Util.darken(c.info, 0.3), bg = opts.transparent and c.none or c.bg },
NotifyDEBUGBorder = { fg = Util.darken(c.base01, 0.3), bg = opts.transparent and c.none or c.bg },
NotifyTRACEBorder = { fg = Util.darken(c.violet500, 0.3), bg = opts.transparent and c.none or c.bg },
--- Icons
NotifyERRORIcon = { fg = c.error },
NotifyWARNIcon = { fg = c.warning },
NotifyINFOIcon = { fg = c.info },
NotifyDEBUGIcon = { fg = c.base01 },
NotifyTRACEIcon = { fg = c.violet500 },
--- Title
NotifyERRORTitle = { fg = c.error },
NotifyWARNTitle = { fg = c.warning },
NotifyINFOTitle = { fg = c.info },
NotifyDEBUGTitle = { fg = c.base01 },
NotifyTRACETitle = { fg = c.violet500 },
--- Body
NotifyERRORBody = { fg = c.fg, bg = opts.transparent and c.none or c.bg },
NotifyWARNBody = { fg = c.fg, bg = opts.transparent and c.none or c.bg },
NotifyINFOBody = { fg = c.fg, bg = opts.transparent and c.none or c.bg },
NotifyDEBUGBody = { fg = c.fg, bg = opts.transparent and c.none or c.bg },
NotifyTRACEBody = { fg = c.fg, bg = opts.transparent and c.none or c.bg },
}
end
return M

View file

@ -0,0 +1,23 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
NvimTreeNormal = { fg = c.base00, bg = c.bg_sidebar },
NvimTreeWinSeparator = { fg = opts.styles.sidebars == "transparent" and c.border or c.bg_sidebar, bg = c.bg_sidebar },
NvimTreeNormalNC = { fg = c.base00, bg = c.bg_sidebar },
NvimTreeRootFolder = { fg = c.blue, bold = true },
NvimTreeGitDirty = { fg = c.yellow500 },
NvimTreeGitNew = { fg = c.green500 },
NvimTreeGitDeleted = { fg = c.red500 },
NvimTreeOpenedFile = { bg = c.bg_highlight },
NvimTreeSpecialFile = { fg = c.violet500, underline = true },
NvimTreeIndentMarker = { fg = c.base02 },
NvimTreeImageFile = { fg = c.base00 },
NvimTreeSymlink = { fg = c.blue },
NvimTreeFolderIcon = { bg = c.none, fg = c.blue },
-- NvimTreeFolderName= { fg = c.fg_float },
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
rainbowcol1 = { fg = c.red500 },
rainbowcol2 = { fg = c.orange500 },
rainbowcol3 = { fg = c.yellow500 },
rainbowcol4 = { fg = c.green500 },
rainbowcol5 = { fg = c.cyan500 },
rainbowcol6 = { fg = c.blue500 },
rainbowcol7 = { fg = c.magenta500 },
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
TSRainbowRed = { fg = c.red },
TSRainbowOrange = { fg = c.orange },
TSRainbowYellow = { fg = c.yellow },
TSRainbowGreen = { fg = c.green },
TSRainbowBlue = { fg = c.blue },
TSRainbowViolet = { fg = c.violet500 },
TSRainbowCyan = { fg = c.cyan },
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
RainbowDelimiterRed = { fg = c.red },
RainbowDelimiterOrange = { fg = c.orange },
RainbowDelimiterYellow = { fg = c.yellow },
RainbowDelimiterGreen = { fg = c.green },
RainbowDelimiterBlue = { fg = c.blue },
RainbowDelimiterViolet = { fg = c.violet },
RainbowDelimiterCyan = { fg = c.cyan },
}
end
return M

View file

@ -0,0 +1,28 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
ScrollbarHandle = { fg = c.none, bg = c.bg_highlight },
ScrollbarSearchHandle = { fg = c.orange, bg = c.bg_highlight },
ScrollbarSearch = { fg = c.orange, bg = c.none },
ScrollbarErrorHandle = { fg = c.error, bg = c.bg_highlight },
ScrollbarError = { fg = c.error, bg = c.none },
ScrollbarWarnHandle = { fg = c.warning, bg = c.bg_highlight },
ScrollbarWarn = { fg = c.warning, bg = c.none },
ScrollbarInfoHandle = { fg = c.info, bg = c.bg_highlight },
ScrollbarInfo = { fg = c.info, bg = c.none },
ScrollbarHintHandle = { fg = c.hint, bg = c.bg_highlight },
ScrollbarHint = { fg = c.hint, bg = c.none },
ScrollbarMiscHandle = { fg = c.violet500, bg = c.bg_highlight },
ScrollbarMisc = { fg = c.violet500, bg = c.none },
}
end
return M

View file

@ -0,0 +1,52 @@
local M = {}
function M.get(c)
-- stylua: ignore
return {
["@lsp.type.boolean"] = "@boolean",
["@lsp.type.builtinType"] = "@type.builtin",
["@lsp.type.comment"] = "@comment",
["@lsp.type.decorator"] = "@attribute",
["@lsp.type.deriveHelper"] = "@attribute",
["@lsp.type.enum"] = "@type",
["@lsp.type.enumMember"] = "@constant",
["@lsp.type.escapeSequence"] = "@string.escape",
["@lsp.type.formatSpecifier"] = "@markup.list",
["@lsp.type.generic"] = "@variable",
["@lsp.type.interface"] = { fg = c.blue500 },
["@lsp.type.keyword"] = "@keyword",
["@lsp.type.lifetime"] = "@keyword.storage",
["@lsp.type.namespace"] = "@module",
["@lsp.type.number"] = "@number",
["@lsp.type.operator"] = "@operator",
["@lsp.type.parameter"] = "@variable.parameter",
["@lsp.type.property"] = "@property",
["@lsp.type.selfKeyword"] = "@variable.builtin",
["@lsp.type.selfTypeKeyword"] = "@variable.builtin",
["@lsp.type.string"] = "@string",
["@lsp.type.typeAlias"] = "@type.definition",
["@lsp.type.unresolvedReference"] = { undercurl = true, sp = c.error },
["@lsp.type.variable"] = {}, -- use treesitter styles for regular variables
["@lsp.typemod.class.defaultLibrary"] = "@type.builtin",
["@lsp.typemod.enum.defaultLibrary"] = "@type.builtin",
["@lsp.typemod.enumMember.defaultLibrary"] = "@constant.builtin",
["@lsp.typemod.function.defaultLibrary"] = "@function.builtin",
["@lsp.typemod.keyword.async"] = "@keyword.coroutine",
["@lsp.typemod.keyword.injected"] = "@keyword",
["@lsp.typemod.macro.defaultLibrary"] = "@function.builtin",
["@lsp.typemod.method.defaultLibrary"] = "@function.builtin",
["@lsp.typemod.operator.injected"] = "@operator",
["@lsp.typemod.string.injected"] = "@string",
["@lsp.typemod.struct.defaultLibrary"] = "@type.builtin",
["@lsp.typemod.type.defaultLibrary"] = { fg = c.blue500 },
["@lsp.typemod.typeAlias.defaultLibrary"] = { fg = c.blue500 },
["@lsp.typemod.variable.callable"] = "@function",
["@lsp.typemod.variable.defaultLibrary"] = "@variable.builtin",
["@lsp.typemod.variable.injected"] = "@variable",
["@lsp.typemod.variable.static"] = "@constant",
-- NOTE: maybe add these with distinct highlights?
-- ["@lsp.typemod.variable.globalScope"] (global variables)
}
end
return M

View file

@ -0,0 +1,20 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
SnacksDashboardDesc = { fg = c.cyan500 },
SnacksDashboardKey = { fg = c.orange500 },
SnacksDashboardFooter = { fg = c.yellow, italic = true },
SnacksDashboardSpecial = { fg = c.yellow500 },
SnacksDashboardHeader = { fg = c.blue },
SnacksDashboardIcon = { fg = c.cyan500, bold = true },
SnacksNotifierBorderTrace = { fg = c.magenta500 },
SnacksNotifierIconTrace = { fg = c.magenta500 },
SnacksNotifierTitleTrace = { fg = c.magenta500 },
SnacksIndentScope = { fg = c.violet700, nocombine = true },
SnacksIndent = { fg = c.base03, nocombine = true },
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
Sneak = { fg = c.bg_highlight, bg = c.magenta },
SneakScope = { bg = c.base03 },
}
end
return M

View file

@ -0,0 +1,61 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
Comment = { fg = c.base01, style = opts.styles.comments }, -- any comment
Constant = { fg = c.cyan500 }, -- (preferred) any constant
String = { fg = c.cyan500 }, -- a string constant: "this is a string"
Character = "Constant", -- a character constant: 'c', '\n'
-- Number = { }, -- a number constant: 234, 0xff
-- Boolean = { }, -- a boolean constant: TRUE, false
-- Float = { }, -- a floating point constant: 2.3e10
Identifier = { fg = c.blue500, style = opts.styles.variables }, -- (preferred) any variable name
Function = { fg = c.blue500, style = opts.styles.functions }, -- function name (also: methods for classes)
Statement = { fg = c.green500 }, -- (preferred) any statement
-- Conditional = { }, -- if, then, else, endif, switch, etc.
-- Repeat = { }, -- for, do, while, etc.
-- Label = { }, -- case, default, etc.
Operator = { fg = c.green500 }, -- "sizeof", "+", "*", etc.
Keyword = { fg = c.green500, style = opts.styles.keywords }, -- any other keyword
-- Exception = { }, -- try, catch, throw
PreProc = { fg = c.red500 }, -- (preferred) generic Preprocessor
-- Include = { }, -- preprocessor #include
-- Define = { }, -- preprocessor #define
-- Macro = { }, -- same as Define
-- PreCondit = { }, -- preprocessor #if, #else, #endif, etc.
Type = { fg = c.yellow500 }, -- (preferred) int, long, char, etc.
-- StorageClass = { }, -- static, register, volatile, etc.
-- Structure = { }, -- struct, union, enum, etc.
-- Typedef = { }, -- A typedef
Special = { fg = c.orange500 }, -- (preferred) any special symbol
-- SpecialChar = { }, -- special character in a constant
-- Tag = { }, -- you can use CTRL-] on this
-- Delimiter = { }, -- character that needs attention
-- SpecialComment= { }, -- special things inside a comment
Debug = { fg = c.orange500 }, -- debugging statements
htmlH1 = { fg = c.magenta500, bold = true },
htmlH2 = { fg = c.blue500, bold = true },
-- mkdHeading = { fg = c.orange, bold = true },
mkdCode = { bg = c.green900 },
mkdCodeDelimiter = { fg = c.base0, bg = c.green700 },
mkdCodeStart = { fg = c.orange500, bold = true },
mkdCodeEnd = { fg = c.orange500, bold = true },
-- mkdLink = { fg = c.blue, underline = true },
markdownHeadingDelimiter = { fg = c.orange500, bold = true },
markdownCode = { fg = c.yellow500, bg = c.green900 },
markdownCodeBlock = { fg = c.yellow500, bg = c.green900 },
markdownH1 = { fg = c.magenta500, bold = true },
markdownH2 = { fg = c.violet500, bold = true },
markdownLinkText = { fg = c.blue500, underline = true },
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
function M.get(c)
-- stylua: ignore
return {
TelescopeBorder = { fg = c.base02, bg = c.bg_float },
TelescopeNormal = { fg = c.base0, bg = c.bg_float },
}
end
return M

View file

@ -0,0 +1,10 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
TreesitterContext = { bg = c.violet900 },
}
end
return M

View file

@ -0,0 +1,141 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
["@annotation"] = "PreProc",
["@attribute"] = "PreProc",
["@boolean"] = "Boolean",
["@character"] = "Character",
["@character.special"] = "SpecialChar",
["@comment"] = "Comment",
["@keyword.conditional"] = "Conditional",
["@constant"] = "Constant",
["@constant.builtin"] = "Special",
["@constant.macro"] = "Define",
["@keyword.debug"] = "Debug",
["@keyword.directive.define"] = "Define",
["@keyword.exception"] = "Exception",
["@number.float"] = "Float",
["@function"] = "Function",
["@function.builtin"] = "Special",
["@function.call"] = "@function",
["@function.macro"] = "Macro",
["@keyword.import"] = "Include",
["@keyword.coroutine"] = "@keyword",
["@keyword.operator"] = "@operator",
["@keyword.return"] = "@keyword",
["@function.method"] = "Function",
["@function.method.call"] = "@function.method",
["@namespace.builtin"] = "@variable.builtin",
["@none"] = {},
["@number"] = "Number",
["@keyword.directive"] = "PreProc",
["@keyword.repeat"] = "Repeat",
["@keyword.storage"] = "StorageClass",
["@string"] = "String",
["@markup.link.label"] = "SpecialChar",
["@markup.link.label.symbol"] = "Identifier",
["@tag"] = "Label",
["@tag.attribute"] = "@property",
["@tag.delimiter"] = "Delimiter",
["@markup"] = "@none",
["@markup.environment"] = "Macro",
["@markup.environment.name"] = "Type",
["@markup.raw"] = "String",
["@markup.math"] = "Special",
["@markup.strong"] = { bold = true },
["@markup.italic"] = { italic = true },
["@markup.strikethrough"] = { strikethrough = true },
["@markup.underline"] = { underline = true },
["@markup.heading"] = "Title",
["@comment.note"] = { fg = c.hint },
["@comment.error"] = { fg = c.error },
["@comment.hint"] = { fg = c.hint },
["@comment.info"] = { fg = c.info },
["@comment.warning"] = { fg = c.warning },
["@comment.todo"] = { fg = c.todo },
["@markup.link.url"] = "Underlined",
["@type"] = "Type",
["@type.definition"] = "Typedef",
["@type.qualifier"] = "@keyword",
-- Misc
-- TODO:
-- ["@comment.documentation"] = { },
-- ["@operator"] = { fg = c.green500 }, -- For any operator: `+`, but also `->` and `*` in C.
-- Punctuation
["@punctuation.delimiter"] = { fg = c.green500 }, -- For delimiters ie: `.`
["@punctuation.bracket"] = { fg = c.orange500 }, -- For brackets and parens.
["@punctuation.special"] = { fg = c.orange500 }, -- For special punctutation that does not fall in the catagories before.
["@punctuation.special.markdown"] = { fg = c.orange500, bold = true },
["@markup.list"] = { fg = c.blue500 }, -- For special punctutation that does not fall in the catagories before.
["@markup.list.markdown"] = { fg = c.orange500, bold = true },
-- Literals
["@string.documentation"] = { fg = c.cyan500 },
["@string.regexp"] = { fg = c.cyan300 }, -- For regexes.
["@string.escape"] = { fg = c.orange700 }, -- For escape characters within a string.
-- Functions
["@constructor"] = { fg = c.orange500 }, -- For constructor calls and definitions: `= { }` in Lua, and Java constructors.
["@variable.parameter"] = { fg = c.orange500 }, -- For parameters of a function.
["@variable.parameter.builtin"] = { fg = c.yellow300 }, -- For builtin parameters of a function, e.g. "..." or Smali's p[1-99]
-- Keywords
["@keyword"] = { fg = c.green500, style = opts.styles.keywords }, -- For keywords that don't fall in previous categories.
["@keyword.function"] = { fg = c.green500, style = opts.styles.functions }, -- For keywords used to define a fuction.
["@label"] = { fg = c.green500 }, -- For labels: `label:` in C and `:label:` in Lua.
-- Types
["@type.builtin"] = "Type",
["@variable.member"] = { fg = c.cyan500 }, -- For fields.
["@property"] = "Identifier",
-- Identifiers
["@variable"] = { fg = c.base0, style = opts.styles.variables }, -- Any variable name that does not have another highlight.
["@variable.builtin"] = { fg = c.orange500 }, -- Variable names that are defined by the languages, like `this` or `self`.
["@module.builtin"] = { fg = c.orange500 }, -- Variable names that are defined by the languages, like `this` or `self`.
-- Text
["@markup.raw.markdown"] = { fg = c.blue },
["@markup.raw.markdown_inline"] = { fg = c.yellow500, bg = c.green900 },
["@markup.link"] = { fg = c.blue500, underline = true },
["@markup.list.unchecked"] = { fg = c.yellow500 }, -- For brackets and parens.
["@markup.list.checked"] = { fg = c.green500 }, -- For brackets and parens.
["@diff.plus"] = "DiffAdd",
["@diff.minus"] = "DiffDelete",
["@diff.delta"] = "DiffChange",
["@module"] = "Include",
-- tsx
["@constructor.tsx"] = { fg = c.blue500 },
["@tag.delimiter.tsx"] = { fg = c.orange500 },
["@tag.tsx"] = { fg = c.yellow500 },
["@keyword.return.tsx"] = { fg = c.green500, italic = true },
["@keyword.tsx"] = { fg = c.green500, italic = true },
-- typescript
["@variable.typescript"] = { fg = c.yellow500 },
-- Vue
["@tag.delimiter.vue"] = { fg = c.orange500 },
-- html
["@tag.delimiter.html"] = { fg = c.orange500 },
-- javascriptreact
["@keyword.javascript"] = { fg = c.green500, italic = true },
["@keyword.return.javascript"] = { fg = c.green500, italic = true },
["@tag.delimiter.javascript"] = { fg = c.orange500 },
["@tag.javascript"] = { fg = c.yellow500 },
["@variable.javascript"] = { fg = c.yellow500 },
}
end
return M

View file

@ -0,0 +1,12 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
TroubleText = { fg = c.base0 },
TroubleCount = { fg = c.magenta500 },
TroubleNormal = { fg = c.base0 },
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
TSNodeKey = { fg = c.magenta500, bold = true },
TSNodeUnmatched = { fg = c.base01 },
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
WhichKey = { fg = c.cyan },
WhichKeyGroup = { fg = c.blue },
WhichKeyDesc = { fg = c.magenta },
WhichKeySeperator = { fg = c.base01 },
WhichKeySeparator = { fg = c.base01 },
WhichKeyBorder = { fg = c.base02, bg = c.bg_float },
WhichKeyValue = { fg = c.violet500 },
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
function M.get(c, opts)
-- stylua: ignore
return {
YankyPut = "IncSearch",
YankyYanked = "IncSearch",
}
end
return M

View file

@ -1,4 +1,3 @@
local util = require("solarized-osaka.util")
local theme = require("solarized-osaka.theme")
local config = require("solarized-osaka.config")
@ -20,7 +19,7 @@ function M.load(opts)
if opts then
require("solarized-osaka.config").extend(opts)
end
util.load(theme.setup())
theme.setup()
end
M.setup = config.setup

File diff suppressed because it is too large Load diff

View file

@ -69,39 +69,6 @@ function M.highlight(group, hl)
vim.api.nvim_set_hl(0, group, hl)
end
---@param config Config
function M.autocmds(config)
local group = vim.api.nvim_create_augroup("solarized-osaka", { clear = true })
vim.api.nvim_create_autocmd("ColorSchemePre", {
group = group,
callback = function()
vim.api.nvim_del_augroup_by_id(group)
end,
})
local function set_whl()
local win = vim.api.nvim_get_current_win()
local whl = vim.split(vim.wo[win].winhighlight, ",")
vim.list_extend(whl, { "Normal:NormalSB", "SignColumn:SignColumnSB" })
whl = vim.tbl_filter(function(hl)
return hl ~= ""
end, whl)
vim.opt_local.winhighlight = table.concat(whl, ",")
end
vim.api.nvim_create_autocmd("FileType", {
group = group,
pattern = table.concat(config.sidebars, ","),
callback = set_whl,
})
if vim.tbl_contains(config.sidebars, "terminal") then
vim.api.nvim_create_autocmd("TermOpen", {
group = group,
callback = set_whl,
})
end
end
-- Simple string interpolation.
--
-- Example template: "${name} is ${value}"
@ -122,36 +89,6 @@ function M.syntax(syntax)
end
end
---@param colors ColorScheme
function M.terminal(colors)
-- dark
vim.g.terminal_color_0 = colors.black
vim.g.terminal_color_8 = colors.terminal_black
-- light
vim.g.terminal_color_7 = colors.fg_dark
vim.g.terminal_color_15 = colors.fg
-- colors
vim.g.terminal_color_1 = colors.red
vim.g.terminal_color_9 = colors.red
vim.g.terminal_color_2 = colors.green
vim.g.terminal_color_10 = colors.green
vim.g.terminal_color_3 = colors.yellow
vim.g.terminal_color_11 = colors.yellow
vim.g.terminal_color_4 = colors.blue
vim.g.terminal_color_12 = colors.blue
vim.g.terminal_color_5 = colors.magenta
vim.g.terminal_color_13 = colors.magenta
vim.g.terminal_color_6 = colors.cyan
vim.g.terminal_color_14 = colors.cyan
end
---@param colors ColorScheme
function M.invert_colors(colors)
if type(colors) == "string" then
@ -179,36 +116,28 @@ function M.invert_highlights(hls)
end
end
---@param theme Theme
function M.load(theme)
-- only needed to clear when not the default colorscheme
if vim.g.colors_name then
vim.cmd("hi clear")
local me = debug.getinfo(1, "S").source:sub(2)
me = vim.fn.fnamemodify(me, ":h:h")
function M.mod(modname)
if package.loaded[modname] then
return package.loaded[modname]
end
local ret = loadfile(me .. "/" .. modname:gsub("%.", "/") .. ".lua")()
package.loaded[modname] = ret
return ret
end
vim.o.termguicolors = true
vim.g.colors_name = "solarized-osaka"
if ts.new_style() then
for group, colors in pairs(ts.defaults) do
if not theme.highlights[group] then
M.highlight(group, colors)
function M.resolve(groups)
for _, hl in pairs(groups) do
if type(hl.style) == "table" then
for k, v in pairs(hl.style) do
hl[k] = v
end
hl.style = nil
end
end
M.syntax(theme.highlights)
-- vim.api.nvim_set_hl_ns(M.ns)
if theme.config.terminal_colors then
M.terminal(theme.colors)
end
M.autocmds(theme.config)
vim.defer_fn(function()
M.syntax(theme.defer)
end, 100)
return groups
end
return M