feat\!: replace disableItalics with italics config option

Replace the negative boolean `disableItalics` with positive `italics` option for better API ergonomics. This affects all italic styling throughout the theme including comments, keywords, and plugin highlights.

BREAKING CHANGE: Users must update their configuration from `disableItalics = true` to `italics = false`.
This commit is contained in:
Webhooked 2025-05-31 14:11:00 +02:00
commit 138f08461f
5 changed files with 10 additions and 18 deletions

View file

@ -75,6 +75,7 @@ There is no need to call setup if you are ok with the defaults.
-- Default options:
require('kanso').setup({
bold = true, -- enable bold fonts
italics = true, -- enable italics
compile = false, -- enable compiling the colorscheme
undercurl = true, -- enable undercurls
commentStyle = { italic = true },
@ -82,7 +83,6 @@ require('kanso').setup({
keywordStyle = { italic = true},
statementStyle = {},
typeStyle = {},
disableItalics = false,
transparent = false, -- do not set background color
dimInactive = false, -- dim inactive window `:h hl-NormalNC`
terminalColors = true, -- define vim.g.terminal_color_{0,17}
@ -235,7 +235,7 @@ require('kanso').setup({
overrides = function(colors)
return {
-- Assign a static color to strings
String = { fg = colors.palette.carpYellow, italic = not config.disableItalics },
String = { fg = colors.palette.carpYellow, italic = config.italics },
-- theme colors will update dynamically when you change theme!
SomePluginHl = { fg = colors.theme.syn.type, bold = true },
}

View file

@ -62,7 +62,7 @@ function M.setup(colors, config)
NvimTreeSymlink = { link = "Type" },
NvimTreeFolderName = { link = "Directory" },
NvimTreeExecFile = { fg = theme.syn.string, bold = config.bold },
NvimTreeOpenedFile = { fg = theme.syn.special1, italic = not config.disableItalics },
NvimTreeOpenedFile = { fg = theme.syn.special1, italic = config.italics },
NvimTreeWinSeparator = { link = "WinSeparator" },
NvimTreeWindowPicker = {
bg = config.transparent and theme.ui.none or theme.ui.bg_m1,
@ -482,7 +482,7 @@ function M.setup(colors, config)
NeotestFile = { fg = theme.syn.fun },
NeotestFocused = { bold = config.bold, underline = true },
NeotestIndent = { fg = theme.ui.special, bold = config.bold },
NeotestMarked = { fg = theme.diag.warning, italic = not config.disableItalics },
NeotestMarked = { fg = theme.diag.warning, italic = config.italics },
NeotestNamespace = { fg = theme.syn.fun },
NeotestPassed = { fg = theme.diag.ok },
NeotestRunning = { fg = theme.vcs.changed },

View file

@ -9,11 +9,7 @@ function M.setup(colors, config)
return {
-- *Comment any comment
Comment = vim.tbl_extend(
"force",
{ fg = theme.syn.comment },
config.disableItalics and {} or config.commentStyle
),
Comment = vim.tbl_extend("force", { fg = theme.syn.comment }, not config.italics and {} or config.commentStyle),
-- *Constant any constant
Constant = { fg = theme.syn.constant },
@ -41,11 +37,7 @@ function M.setup(colors, config)
-- Operator "sizeof", "+", "*", etc.
Operator = { fg = theme.syn.operator },
-- Keyword any other keyword
Keyword = vim.tbl_extend(
"force",
{ fg = theme.syn.keyword },
config.disableItalics and {} or config.keywordStyle
),
Keyword = vim.tbl_extend("force", { fg = theme.syn.keyword }, not config.italics and {} or config.keywordStyle),
-- Exception try, catch, throw
Exception = { fg = theme.syn.special2 },
@ -74,7 +66,7 @@ function M.setup(colors, config)
-- *Underlined text that stands out, HTML links
Underlined = { fg = theme.syn.special1, underline = true },
Bold = { bold = config.bold },
Italic = { italic = not config.disableItalics },
Italic = { italic = config.italics },
-- *Ignore left blank, hidden |hl-Ignore|
Ignore = { link = "NonText" },

View file

@ -9,7 +9,7 @@ function M.setup(colors, config)
-- @variable various variable names
["@variable"] = { fg = theme.ui.fg },
-- @variable.builtin (Special) built-in variable names (e.g. `this`, `self`)
["@variable.builtin"] = { fg = theme.syn.special2, italic = not config.disableItalics },
["@variable.builtin"] = { fg = theme.syn.special2, italic = config.italics },
-- @variable.parameter parameters of a function
["@variable.parameter"] = { fg = theme.syn.parameter },
-- @variable.parameter.builtin special parameters (e.g. `_`, `it`)
@ -80,7 +80,7 @@ function M.setup(colors, config)
["@keyword.return"] = vim.tbl_extend(
"force",
{ fg = theme.syn.special3 },
config.disableItalics and {} or config.keywordStyle
not config.italics and {} or config.keywordStyle
),
-- @keyword.debug keywords related to debugging
-- @keyword.exception keywords related to exceptions (e.g. `throw`, `catch`)

View file

@ -9,6 +9,7 @@ local M = {}
---@class KansoConfig
M.config = {
bold = true,
italics = true,
undercurl = true,
commentStyle = { italic = true },
functionStyle = {},
@ -18,7 +19,6 @@ M.config = {
transparent = false,
dimInactive = false,
terminalColors = true,
disableItalics = false,
colors = { theme = { zen = {}, pearl = {}, ink = {}, all = {} }, palette = {} },
---@type fun(colors: KansoColorsSpec): table<string, table>
overrides = function()