Refactor theme colors and UI settings for improved visibility and consistency across components. Update README.

This commit is contained in:
Webhooked
2025-05-07 11:27:21 +02:00
parent 47074d196d
commit e5ae0533c5
5 changed files with 616 additions and 603 deletions
+1 -1
View File
@@ -210,7 +210,7 @@ require('kanso').setup({
},
all = {
ui = {
bg_gutter = "none"
cursor_line_nr_active_foreground = "#C4746E"
}
}
}
+14 -14
View File
@@ -46,9 +46,9 @@ function M.setup(colors, config)
-- 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.bg_gutter },
FoldColumn = { fg = theme.ui.nontext, bg = theme.ui.none },
-- SignColumn Column where |signs| are displayed.
SignColumn = { fg = theme.ui.special, bg = theme.ui.bg_gutter },
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.
@@ -66,7 +66,7 @@ function M.setup(colors, config)
-- ModeMsg 'showmode' message (e.g., "-- INSERT --").
ModeMsg = { fg = theme.diag.warning, bold = true },
-- MsgArea Area for messages and cmdline.
MsgArea = vim.o.cmdheight == 0 and {link = 'StatusLine'} or { fg = theme.ui.fg_dim },
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|
@@ -74,7 +74,7 @@ function M.setup(colors, config)
-- 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 = not config.transparent and theme.ui.bg or "NONE" },
Normal = { fg = theme.ui.fg, bg = theme.ui.none },
-- NormalFloat Normal text in floating windows.
NormalFloat = { fg = theme.ui.float.fg, bg = theme.ui.float.bg },
-- FloatBorder Border of floating windows.
@@ -118,15 +118,15 @@ function M.setup(colors, config)
-- 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.bg_m3 },
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.bg_m3 },
StatusLineNC = { fg = theme.ui.nontext, bg = theme.ui.none },
-- TabLine Tab pages line, not active tab page label.
TabLine = { bg = theme.ui.bg_m3, fg = theme.ui.special },
TabLine = { bg = theme.ui.none, fg = theme.ui.special },
-- TabLineFill Tab pages line, where there are no labels.
TabLineFill = { bg = theme.ui.bg },
TabLineFill = { bg = theme.ui.none },
-- TabLineSel Tab pages line, active tab page label.
TabLineSel = { fg = theme.ui.fg_dim, bg = theme.ui.bg_p1 },
TabLineSel = { fg = theme.ui.fg_dim, bg = not config.transparent and theme.ui.bg_p1 or "NONE", bold = true },
-- Title Titles for output from ":set all", ":autocmd" etc.
Title = { fg = theme.syn.fun, bold = true },
-- Visual Visual mode selection.
@@ -148,7 +148,7 @@ function M.setup(colors, config)
-- NormalSB = { link = "Normal" },
debugPC = { bg = theme.diff.delete },
debugBreakpoint = { fg = theme.syn.special1, bg = theme.ui.bg_gutter },
debugBreakpoint = { fg = theme.syn.special1, bg = theme.ui.none },
LspReferenceText = { bg = theme.ui.bg_p2 },
LspReferenceRead = { link = "LspReferenceText" },
@@ -167,10 +167,10 @@ function M.setup(colors, config)
DiagnosticFloatingHint = { fg = theme.diag.hint },
DiagnosticFloatingOk = { fg = theme.diag.ok },
DiagnosticSignError = { fg = theme.diag.error, bg = theme.ui.bg_gutter },
DiagnosticSignWarn = { fg = theme.diag.warning, bg = theme.ui.bg_gutter },
DiagnosticSignInfo = { fg = theme.diag.info, bg = theme.ui.bg_gutter },
DiagnosticSignHint = { fg = theme.diag.hint, bg = theme.ui.bg_gutter },
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" },
+33 -25
View File
@@ -5,6 +5,7 @@ local M = {}
function M.setup(colors, config)
config = config or require("kanso").config
local theme = colors.theme
return {
-- Neovcs
-- NeovcsBranch = {},
@@ -21,9 +22,9 @@ function M.setup(colors, config)
-- vcsSignsDeleteLn = { bg = theme.diff.delete },
-- Gitsigns
GitSignsAdd = { fg = theme.vcs.added, bg = theme.ui.bg_gutter },
GitSignsChange = { fg = theme.vcs.changed, bg = theme.ui.bg_gutter },
GitSignsDelete = { fg = theme.vcs.removed, bg = theme.ui.bg_gutter },
GitSignsAdd = { fg = theme.vcs.added, bg = theme.ui.none },
GitSignsChange = { fg = theme.vcs.changed, bg = theme.ui.none },
GitSignsDelete = { fg = theme.vcs.removed, bg = theme.ui.none },
-- Neogit
NeogitDiffContextHighlight = { bg = theme.diff.change }, --[[ guibg=#333333 guifg=#b2b2b2 ]]
NeogitHunkHeader = { fg = theme.syn.fun }, --[[ guifg=#cccccc guibg=#404040 ]]
@@ -32,7 +33,7 @@ function M.setup(colors, config)
NeogitDiffDeleteHighlight = { bg = theme.diff.delete },
-- TreeSitter Extensions
TreesitterContext = { link = "Folded" },
TreesitterContextLineNumber = { fg = theme.ui.special, bg = theme.ui.bg_gutter },
TreesitterContextLineNumber = { fg = theme.ui.special, bg = theme.ui.none },
-- Telescope
TelescopeBorder = { fg = theme.ui.float.fg_border, bg = theme.ui.bg },
TelescopeTitle = { fg = theme.ui.special },
@@ -61,10 +62,10 @@ function M.setup(colors, config)
NvimTreeWinSeparator = { link = "WinSeparator" },
NvimTreeWindowPicker = { bg = theme.ui.bg_m1, fg = theme.syn.special1, bold = true },
-- NeoTree
NeoTreeTabInactive = { link = "TabLine" },
NeoTreeTabActive = { link = "TabLineSel" },
NeoTreeTabSeparatorInactive = { link = "NeoTreeTabInactive" },
NeoTreeTabSeparatorActive = { link = "NeoTreeTabActive" },
NeoTreeTabInactive = { fg = theme.ui.special, bg = config.transparent and "NONE" or theme.ui.bg },
NeoTreeTabActive = { fg = theme.ui.fg_dim, bg = config.transparent and "NONE" or theme.ui.bg_p1, bold = true },
NeoTreeTabSeparatorInactive = { fg = theme.ui.special, bg = config.transparent and "NONE" or theme.ui.bg },
NeoTreeTabSeparatorActive = { fg = theme.ui.fg_dim, bg = config.transparent and "NONE" or theme.ui.bg_p1 },
NeoTreeRootName = { fg = theme.syn.identifier, bold = true },
NeoTreeModified = { link = "String" },
NeoTreeGitModified = { fg = theme.vcs.changed },
@@ -198,10 +199,10 @@ function M.setup(colors, config)
BlinkCmpGhostText = { fg = theme.syn.comment },
BlinkCmpDoc = { link = "NormalFloat" },
BlinkCmpDocBorder = { link = "FloatBorder" },
BlinkCmpDocCursorLine = { link = "Visual"},
BlinkCmpDocCursorLine = { link = "Visual" },
BlinkCmpSignatureHelp = { link = "NormalFloat" },
BlinkCmpSignatureHelpBorder = { link = "FloatBorder" },
BlinkCmpSignatureHelpActiveParameter = { link = "LspSignatureActiveParameter"},
BlinkCmpSignatureHelpActiveParameter = { link = "LspSignatureActiveParameter" },
BlinkCmpKind = { fg = theme.ui.fg_dim },
BlinkCmpKindText = { fg = theme.ui.fg },
@@ -232,14 +233,20 @@ function M.setup(colors, config)
BlinkCmpKindCopilot = { link = "String" },
-- IndentBlankline
IndentBlanklineChar = { fg = theme.ui.whitespace },
IndentBlanklineSpaceChar = { fg = theme.ui.whitespace },
IndentBlanklineSpaceCharBlankline = { fg = theme.ui.whitespace },
IndentBlanklineContextChar = { fg = theme.ui.special },
IndentBlanklineContextStart = { sp = theme.ui.special, underline = true },
IblIndent = { fg = theme.ui.whitespace },
IblWhitespace = { fg = theme.ui.whitespace },
IblScope = { fg = theme.ui.special },
IndentBlanklineChar = { fg = theme.ui.indent_line, nocombine = true },
IndentBlanklineSpaceChar = { fg = theme.ui.indent_line, nocombine = true },
IndentBlanklineSpaceCharBlankline = { fg = theme.ui.indent_line, nocombine = true },
IndentBlanklineContextChar = { fg = theme.ui.active_indent_line, nocombine = true },
IndentBlanklineContextStart = { sp = theme.ui.active_indent_line, underline = true, nocombine = true },
IblIndent = { fg = theme.ui.indent_line, nocombine = true },
IblWhitespace = { fg = theme.ui.indent_line, nocombine = true },
IblScope = { fg = theme.ui.active_indent_line, nocombine = true },
-- Other indent plugins
IndentLine = { fg = theme.ui.indent_line, nocombine = true },
Indent = { fg = theme.ui.indent_line, nocombine = true },
IndentGuide = { fg = theme.ui.indent_line, nocombine = true },
IndentGuidesOdd = { fg = theme.ui.indent_line, nocombine = true },
IndentGuidesEven = { fg = theme.ui.indent_line, nocombine = true },
-- Lazy
LazyProgressTodo = { fg = theme.ui.nontext },
@@ -333,9 +340,9 @@ function M.setup(colors, config)
MiniDepsTitleSame = { link = "DiffText" },
MiniDepsTitleUpdate = { link = "DiffAdd" },
MiniDiffSignAdd = { fg = theme.vcs.added, bg = theme.ui.bg_gutter },
MiniDiffSignChange = { fg = theme.vcs.changed, bg = theme.ui.bg_gutter },
MiniDiffSignDelete = { fg = theme.vcs.removed, bg = theme.ui.bg_gutter },
MiniDiffSignAdd = { fg = theme.vcs.added, bg = theme.ui.none },
MiniDiffSignChange = { fg = theme.vcs.changed, bg = theme.ui.none },
MiniDiffSignDelete = { fg = theme.vcs.removed, bg = theme.ui.none },
MiniDiffOverAdd = { link = "DiffAdd" },
MiniDiffOverChange = { link = "DiffText" },
MiniDiffOverContext = { link = "DiffChange" },
@@ -458,16 +465,17 @@ function M.setup(colors, config)
SnacksPicker = { bg = theme.ui.bg },
SnacksPickerTitle = { fg = theme.ui.fg, bg = theme.ui.bg },
SnacksPickerBorder = { fg = theme.ui.bg },
SnacksPickerBorder = { fg = theme.ui.none, bg = theme.ui.none },
SnacksPickerNormal = { fg = theme.ui.fg, bg = theme.ui.bg },
SnacksPickerMatch = { fg = theme.ui.fg },
SnacksPickerCursor = { fg = theme.ui.bg, bg = theme.ui.bg },
SnacksPickerPrompt = { fg = theme.ui.fg },
SnacksPickerDim = { fg = theme.ui.fg_dim },
SnacksInputIcon = { fg = theme.ui.fg, bg = theme.ui.bg },
SnacksIndent = { fg = theme.ui.bg_gutter, bg = theme.ui.bg },
SnacksIndentScope = { fg = theme.ui.bg, bg = theme.ui.bg },
SnacksPickerInputBorder = { fg = theme.ui.bg, bg = theme.ui.bg },
SnacksIndent = { fg = theme.ui.indent_line, nocombine = true },
SnacksIndentChunk = { fg = theme.ui.active_indent_line, nocombine = true },
SnacksIndentScope = { fg = theme.ui.active_indent_line, nocombine = true },
SnacksPickerInputBorder = { fg = theme.ui.float.bg_border, bg = theme.ui.bg },
SnacksPickerInputTitle = { fg = theme.ui.bg, bg = theme.ui.bg },
SnacksPickerBoxTitle = { fg = theme.ui.bg, bg = theme.ui.bg },
SnacksPickerSelected = { fg = theme.ui.bg },
+15 -10
View File
@@ -56,6 +56,8 @@ local c = require("kanso.lib.color")
---@field bg_p2 ColorSpec Lighter background Cursor{Line,Column}, TabLineSel (Selected Items)
---@field bg_gutter ColorSpec {Sign,Fold}Column, LineNr
---@field special ColorSpec SpecialKey
---@field indent_line ColorSpec IndentLine
---@field active_indent_line ColorSpec IndentLine
---@field nontext ColorSpec LineNr, NonText
---@field whitespace ColorSpec Whitespace
---@field bg_search ColorSpec
@@ -100,7 +102,6 @@ return {
fg_reverse = palette.zenBlue1,
bg_dim = palette.zen0,
bg_gutter = palette.zen0,
bg_m3 = palette.zen0,
bg_m2 = palette.zen0,
@@ -110,7 +111,9 @@ return {
bg_p2 = palette.zen2,
special = palette.inkGray3,
whitespace = palette.inkAsh,
indent_line = palette.inkBlack2,
active_indent_line = palette.inkBlack3,
whitespace = palette.inkBlack0,
nontext = palette.inkAsh,
bg_visual = palette.inkBlack2,
@@ -133,7 +136,7 @@ return {
float = {
fg = palette.oldWhite,
bg = palette.zen0,
fg_border = palette.zen3,
fg_border = palette.zen2,
bg_border = palette.zen0,
},
},
@@ -208,7 +211,6 @@ return {
fg_reverse = palette.zenBlue1,
bg_dim = palette.inkBlack0,
bg_gutter = palette.inkBlack0,
bg_m3 = palette.inkBlack0,
bg_m2 = palette.inkBlack0,
@@ -218,7 +220,9 @@ return {
bg_p2 = palette.inkBlack2,
special = palette.inkGray3,
whitespace = palette.inkAsh,
indent_line = palette.inkBlack2,
active_indent_line = palette.inkBlack3,
whitespace = palette.inkBlack0,
nontext = palette.inkAsh,
bg_visual = palette.inkBlack3,
@@ -241,7 +245,7 @@ return {
float = {
fg = palette.oldWhite,
bg = palette.inkBlack0,
fg_border = palette.inkBlack3,
fg_border = palette.inkBlack2,
bg_border = palette.inkBlack0,
},
},
@@ -316,7 +320,6 @@ return {
fg_reverse = palette.pearlGray,
bg_dim = palette.pearlWhite0,
bg_gutter = palette.pearlWhite0,
bg_m3 = palette.pearlWhite0,
bg_m2 = palette.pearlWhite0,
@@ -326,8 +329,10 @@ return {
bg_p2 = palette.pearlWhite1,
nontext = palette.pearlViolet1,
whitespace = palette.pearlViolet1,
whitespace = palette.pearlWhite0,
special = palette.pearlViolet2,
indent_line = palette.pearlWhite1,
active_indent_line = palette.pearlWhite2,
bg_visual = palette.pearlWhite2,
bg_search = palette.pearlBlue2,
@@ -348,7 +353,7 @@ return {
float = {
fg = palette.pearlInk2,
bg = palette.pearlWhite0,
fg_border = palette.pearlGray2,
fg_border = palette.pearlWhite2,
bg_border = palette.pearlWhite0,
},
},
@@ -400,7 +405,7 @@ return {
palette.pearlPink, -- magenta
palette.pearlAqua, -- cyan
palette.pearlInk0, -- white
palette.pearlGray3 , -- bright black
palette.pearlGray3, -- bright black
palette.pearlRed2, -- bright red
palette.pearlGreen2, -- bright green
palette.pearlYellow2, -- bright yellow
+9 -9
View File
@@ -4,34 +4,34 @@ local kanso = {}
kanso.normal = {
a = { bg = theme.syn.fun, fg = theme.ui.bg },
b = { bg = theme.diff.change, fg = theme.syn.fun },
c = { bg = theme.ui.bg, fg = theme.ui.fg },
b = { bg = theme.ui.none, fg = theme.syn.fun },
c = { bg = theme.ui.none, fg = theme.ui.fg },
}
kanso.insert = {
a = { bg = theme.diag.ok, fg = theme.ui.bg },
b = { bg = theme.ui.bg, fg = theme.diag.ok },
b = { bg = theme.ui.none, fg = theme.diag.ok },
}
kanso.command = {
a = { bg = theme.syn.operator, fg = theme.ui.bg },
b = { bg = theme.ui.bg, fg = theme.syn.operator },
b = { bg = theme.ui.none, fg = theme.syn.operator },
}
kanso.visual = {
a = { bg = theme.syn.keyword, fg = theme.ui.bg },
b = { bg = theme.ui.bg, fg = theme.syn.keyword },
b = { bg = theme.ui.none, fg = theme.syn.keyword },
}
kanso.replace = {
a = { bg = theme.syn.constant, fg = theme.ui.bg },
b = { bg = theme.ui.bg, fg = theme.syn.constant },
b = { bg = theme.ui.none, fg = theme.syn.constant },
}
kanso.inactive = {
a = { bg = theme.ui.bg, fg = theme.ui.fg_dim },
b = { bg = theme.ui.bg, fg = theme.ui.fg_dim },
c = { bg = theme.ui.bg, fg = theme.ui.fg_dim },
a = { bg = theme.ui.none, fg = theme.ui.fg_dim },
b = { bg = theme.ui.none, fg = theme.ui.fg_dim },
c = { bg = theme.ui.none, fg = theme.ui.fg_dim },
}
if vim.g.kanso_lualine_bold then