mirror of
https://github.com/webhooked/kanso.nvim.git
synced 2026-05-30 13:47:00 +02:00
228 lines
13 KiB
Lua
228 lines
13 KiB
Lua
-- local c = require("kanso.color")
|
|
local M = {}
|
|
|
|
---@param colors KansoColors
|
|
---@param config? KansoConfig
|
|
function M.setup(colors, config)
|
|
local theme = colors.theme
|
|
config = config or require("kanso").config
|
|
|
|
return {
|
|
-- ColorColumn Used for the columns set with 'colorcolumn'.
|
|
ColorColumn = { bg = theme.ui.bg_p1 },
|
|
-- Conceal Placeholder characters substituted for concealed text (see 'conceallevel').
|
|
Conceal = { fg = theme.ui.special, bold = config.bold },
|
|
-- CurSearch Used for highlighting a search pattern under the cursor (see 'hlsearch').
|
|
CurSearch = { fg = theme.ui.fg, bg = theme.ui.bg_search, bold = config.bold },
|
|
-- Cursor Character under the cursor.
|
|
Cursor = { fg = theme.ui.cursor_fg, bg = theme.ui.cursor_bg },
|
|
-- lCursor Character under the cursor when |language-mapping| is used (see 'guicursor').
|
|
lCursor = { link = "Cursor" },
|
|
-- CursorIM Like Cursor, but used when in IME mode.
|
|
CursorIM = { link = "Cursor" },
|
|
-- CursorColumn Screen-column at the cursor, when 'cursorcolumn' is set.
|
|
CursorColumn = { link = "CursorLine" },
|
|
-- CursorLine Screen-line at the cursor, when 'cursorline' is set. Low-priority if foreground (ctermfg OR guifg) is not set.
|
|
CursorLine = { bg = theme.ui.bg_p2 },
|
|
-- Directory Directory names (and other special names in listings).
|
|
Directory = { fg = theme.syn.fun },
|
|
-- DiffAdd Diff mode: Added line. |diff.txt|
|
|
DiffAdd = { bg = theme.diff.add },
|
|
-- DiffChange Diff mode: Changed line. |diff.txt|
|
|
DiffChange = { bg = theme.diff.change },
|
|
-- DiffDelete Diff mode: Deleted line. |diff.txt|
|
|
DiffDelete = { fg = theme.vcs.removed, bg = theme.diff.delete },
|
|
-- DiffText Diff mode: Changed text within a changed line. |diff.txt|
|
|
DiffText = { bg = theme.diff.text },
|
|
-- EndOfBuffer Filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|.
|
|
EndOfBuffer = { fg = theme.ui.bg },
|
|
-- TermCursor Cursor in a focused terminal.
|
|
-- TermCursorNC Cursor in an unfocused terminal.
|
|
-- ErrorMsg Error messages on the command line.
|
|
ErrorMsg = { fg = theme.diag.error },
|
|
-- WinSeparator Separators between window splits.
|
|
WinSeparator = { fg = theme.ui.bg_m3, bg = config.dimInactive and theme.ui.bg_dim or theme.ui.none },
|
|
VertSplit = { link = "WinSeparator" },
|
|
-- Folded Line used for closed folds.
|
|
Folded = { fg = theme.ui.special, bg = theme.ui.bg_p1 },
|
|
-- FoldColumn 'foldcolumn'
|
|
FoldColumn = { fg = theme.ui.nontext, bg = theme.ui.none },
|
|
-- SignColumn Column where |signs| are displayed.
|
|
SignColumn = { fg = theme.ui.special, bg = theme.ui.none },
|
|
-- IncSearch 'incsearch' highlighting; also used for the text replaced with ":s///c".
|
|
IncSearch = { fg = theme.ui.fg_reverse, bg = theme.diag.warning },
|
|
-- Substitute |:substitute| replacement text highlighting.
|
|
Substitute = { fg = theme.ui.fg, bg = theme.vcs.removed },
|
|
-- LineNr Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
|
|
LineNr = { fg = theme.ui.cursor_line_nr_foreground, bg = theme.ui.none },
|
|
-- LineNrAbove Line number for when the 'relativenumber' option is set, above the cursor line.
|
|
-- LineNrBelow Line number for when the 'relativenumber' option is set, below the cursor line.
|
|
-- CursorLineNr Like LineNr when 'cursorline' is set and 'cursorlineopt' contains "number" or is "both", for the cursor line.
|
|
CursorLineNr = { fg = theme.ui.cursor_line_nr_active_foreground, bg = theme.ui.none },
|
|
-- CursorLineFold Like FoldColumn when 'cursorline' is set for the cursor line.
|
|
-- CursorLineSign Like SignColumn when 'cursorline' is set for the cursor line.
|
|
-- MatchParen Character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt|
|
|
MatchParen = { fg = theme.diag.warning, bold = config.bold },
|
|
-- ModeMsg 'showmode' message (e.g., "-- INSERT --").
|
|
ModeMsg = { fg = theme.diag.warning, bold = config.bold },
|
|
-- MsgArea Area for messages and cmdline.
|
|
MsgArea = vim.o.cmdheight == 0 and { link = "StatusLine" } or { fg = theme.ui.fg_dim },
|
|
-- MsgSeparator Separator for scrolled messages |msgsep|.
|
|
MsgSeparator = { bg = vim.o.cmdheight == 0 and theme.ui.bg or theme.ui.bg_m3 },
|
|
-- MoreMsg |more-prompt|
|
|
MoreMsg = { fg = theme.diag.info },
|
|
-- NonText '@' 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|.
|
|
NonText = { fg = theme.ui.nontext },
|
|
-- Normal Normal text.
|
|
Normal = { fg = theme.ui.fg, bg = config.transparent and theme.ui.none or theme.ui.bg },
|
|
-- NormalFloat Normal text in floating windows.
|
|
NormalFloat = { fg = theme.ui.float.fg, bg = config.transparent and theme.ui.none or theme.ui.float.bg },
|
|
-- FloatBorder Border of floating windows.
|
|
FloatBorder = {
|
|
fg = theme.ui.float.fg_border,
|
|
bg = config.transparent and theme.ui.none or theme.ui.float.bg_border,
|
|
},
|
|
-- FloatTitle Title of floating windows.
|
|
FloatTitle = {
|
|
fg = theme.ui.special,
|
|
bg = config.transparent and theme.ui.none or theme.ui.float.bg_border,
|
|
bold = config.bold,
|
|
},
|
|
-- FloatFooter Footer of floating windows.
|
|
FloatFooter = { fg = theme.ui.nontext, bg = config.transparent and theme.ui.none or theme.ui.float.bg_border },
|
|
-- NormalNC Normal text in non-current windows.
|
|
NormalNC = config.dimInactive and { fg = theme.ui.fg_dim, bg = theme.ui.bg_dim } or { link = "Normal" },
|
|
-- Pmenu Popup menu: Normal item.
|
|
Pmenu = { fg = theme.ui.pmenu.fg, bg = config.transparent and theme.ui.none or theme.ui.pmenu.bg },
|
|
-- PmenuSel Popup menu: Selected item.
|
|
PmenuSel = { fg = theme.ui.pmenu.fg_sel, bg = theme.ui.pmenu.bg_sel },
|
|
-- PmenuKind Popup menu: Normal item "kind".
|
|
PmenuKind = { fg = theme.ui.fg_dim, bg = config.transparent and theme.ui.none or theme.ui.pmenu.bg },
|
|
-- PmenuKindSel Popup menu: Selected item "kind".
|
|
PmenuKindSel = { fg = theme.ui.fg_dim, bg = theme.ui.pmenu.bg_sel },
|
|
-- PmenuExtra Popup menu: Normal item "extra text".
|
|
PmenuExtra = { fg = theme.ui.special, bg = theme.ui.pmenu.bg },
|
|
-- PmenuExtraSel Popup menu: Selected item "extra text".
|
|
PmenuExtraSel = { fg = theme.ui.special, bg = theme.ui.pmenu.bg_sel },
|
|
-- PmenuSbar Popup menu: Scrollbar.
|
|
PmenuSbar = { bg = config.transparent and theme.ui.none or theme.ui.pmenu.bg_sbar },
|
|
-- PmenuThumb Popup menu: Thumb of the scrollbar.
|
|
PmenuThumb = { bg = theme.ui.pmenu.bg_thumb },
|
|
-- Question |hit-enter| prompt and yes/no questions.
|
|
Question = { link = "MoreMsg" },
|
|
-- QuickFixLine Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there.
|
|
QuickFixLine = { bg = config.transparent and theme.ui.none or theme.ui.bg_p1 },
|
|
-- Search Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
|
|
Search = { fg = theme.ui.fg, bg = theme.ui.bg_search },
|
|
-- SpecialKey Unprintable characters: Text displayed differently from what it really is. But not 'listchars' whitespace. |hl-Whitespace|
|
|
SpecialKey = { fg = theme.ui.special },
|
|
-- SpellBad Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise.
|
|
SpellBad = { undercurl = config.undercurl, underline = not config.undercurl, sp = theme.diag.error },
|
|
-- SpellCap Word that should start with a capital. |spell| Combined with the highlighting used otherwise.
|
|
SpellCap = { undercurl = config.undercurl, underline = not config.undercurl, sp = theme.diag.warning },
|
|
-- SpellLocal Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise.
|
|
SpellLocal = { undercurl = config.undercurl, underline = not config.undercurl, sp = theme.diag.warning },
|
|
-- SpellRare Word that is recognized by the spellchecker as one that is hardly ever used. |spell| Combined with the highlighting used otherwise.
|
|
SpellRare = { undercurl = config.undercurl, underline = not config.undercurl, sp = theme.diag.warning },
|
|
-- StatusLine Status line of current window.
|
|
StatusLine = { fg = theme.ui.fg_dim, bg = theme.ui.none },
|
|
-- StatusLineNC Status lines of not-current windows. Note: If this is equal to "StatusLine", Vim will use "^^^" in the status line of the current window.
|
|
StatusLineNC = { fg = theme.ui.nontext, bg = theme.ui.none },
|
|
-- TabLine Tab pages line, not active tab page label.
|
|
TabLine = { bg = theme.ui.none, fg = theme.ui.special },
|
|
-- TabLineFill Tab pages line, where there are no labels.
|
|
TabLineFill = { bg = theme.ui.none },
|
|
-- TabLineSel Tab pages line, active tab page label.
|
|
TabLineSel = {
|
|
fg = theme.ui.fg_dim,
|
|
bg = not config.transparent and theme.ui.bg_p1 or theme.ui.none,
|
|
bold = config.bold,
|
|
},
|
|
-- Title Titles for output from ":set all", ":autocmd" etc.
|
|
Title = { fg = theme.syn.fun, bold = config.bold },
|
|
-- Visual Visual mode selection.
|
|
Visual = { bg = theme.ui.bg_visual },
|
|
-- VisualNOS Visual mode selection when vim is "Not Owning the Selection".
|
|
VisualNOS = { link = "Visual" },
|
|
-- WarningMsg Warning messages.
|
|
WarningMsg = { fg = theme.diag.warning },
|
|
-- Whitespace "nbsp", "space", "tab", "multispace", "lead" and "trail" in 'listchars'.
|
|
Whitespace = { fg = theme.ui.whitespace },
|
|
-- WildMenu Current match in 'wildmenu' completion.
|
|
WildMenu = { link = "Pmenu" },
|
|
-- WinBar Window bar of current window.
|
|
WinBar = { fg = theme.ui.fg_dim, bg = theme.ui.none },
|
|
-- WinBarNC Window bar of not-current windows.
|
|
WinBarNC = { fg = theme.ui.fg_dim, bg = config.dimInactive and theme.ui.bg_dim or theme.ui.none },
|
|
|
|
-- SignColumnSB = { link = "SignColumn" },
|
|
-- NormalSB = { link = "Normal" },
|
|
|
|
debugPC = { bg = theme.diff.delete },
|
|
debugBreakpoint = { fg = theme.syn.special1, bg = theme.ui.none },
|
|
|
|
LspReferenceText = { bg = theme.ui.bg_p2 },
|
|
LspReferenceRead = { link = "LspReferenceText" },
|
|
LspReferenceWrite = { bg = theme.ui.bg_p2, underline = true },
|
|
-- LspInlayHint = { link = "NonText"},
|
|
|
|
DiagnosticError = { fg = theme.diag.error },
|
|
DiagnosticWarn = { fg = theme.diag.warning },
|
|
DiagnosticInfo = { fg = theme.diag.info },
|
|
DiagnosticHint = { fg = theme.diag.hint },
|
|
DiagnosticOk = { fg = theme.diag.ok },
|
|
|
|
DiagnosticFloatingError = { fg = theme.diag.error },
|
|
DiagnosticFloatingWarn = { fg = theme.diag.warning },
|
|
DiagnosticFloatingInfo = { fg = theme.diag.info },
|
|
DiagnosticFloatingHint = { fg = theme.diag.hint },
|
|
DiagnosticFloatingOk = { fg = theme.diag.ok },
|
|
|
|
DiagnosticSignError = { fg = theme.diag.error, bg = theme.ui.none },
|
|
DiagnosticSignWarn = { fg = theme.diag.warning, bg = theme.ui.none },
|
|
DiagnosticSignInfo = { fg = theme.diag.info, bg = theme.ui.none },
|
|
DiagnosticSignHint = { fg = theme.diag.hint, bg = theme.ui.none },
|
|
|
|
DiagnosticVirtualTextError = { link = "DiagnosticError" },
|
|
DiagnosticVirtualTextWarn = { link = "DiagnosticWarn" },
|
|
DiagnosticVirtualTextInfo = { link = "DiagnosticInfo" },
|
|
DiagnosticVirtualTextHint = { link = "DiagnosticHint" },
|
|
|
|
DiagnosticUnderlineError = {
|
|
undercurl = config.undercurl,
|
|
underline = not config.undercurl,
|
|
sp = theme.diag.error,
|
|
},
|
|
DiagnosticUnderlineWarn = {
|
|
undercurl = config.undercurl,
|
|
underline = not config.undercurl,
|
|
sp = theme.diag.warning,
|
|
},
|
|
DiagnosticUnderlineInfo = {
|
|
undercurl = config.undercurl,
|
|
underline = not config.undercurl,
|
|
sp = theme.diag.info,
|
|
},
|
|
DiagnosticUnderlineHint = {
|
|
undercurl = config.undercurl,
|
|
underline = not config.undercurl,
|
|
sp = theme.diag.hint,
|
|
},
|
|
|
|
LspSignatureActiveParameter = { fg = theme.diag.warning },
|
|
LspCodeLens = { fg = theme.syn.comment },
|
|
|
|
-- vcs
|
|
diffAdded = { fg = theme.vcs.added },
|
|
diffRemoved = { fg = theme.vcs.removed },
|
|
diffDeleted = { fg = theme.vcs.removed },
|
|
diffChanged = { fg = theme.vcs.changed },
|
|
diffOldFile = { fg = theme.vcs.removed },
|
|
diffNewFile = { fg = theme.vcs.added },
|
|
-- diffFile = { fg = c.steelGray },
|
|
-- diffLine = { fg = c.steelGray },
|
|
-- diffIndexLine = { link = 'Identifier' },
|
|
}
|
|
end
|
|
|
|
return M
|