feat: Solarized theme restructuring

The "Solarized Neo" theme, which included both light and dark variants,
has been dropped. The light variant of "Neo" is now the "Solarized
Light" theme. The original "Solarized" by Ethan Schoonover, which also
had light and dark versions, is now solely represented as the "Solarized
Dark" theme.
This commit is contained in:
Max Miliano 2024-08-23 19:46:38 -03:00
parent 322be5da46
commit 5b304a17ae
76 changed files with 2081 additions and 2698 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
sample
vscode
build

View file

@ -1,3 +1,8 @@
{
"diagnostics.disable": ["undefined-field"]
"workspace.library": [
"/home/milianor/neovim/share/nvim/runtime",
"${3rd}/luv/library",
"${3rd}/busted/library",
"${3rd}/luassert/library"
]
}

View file

@ -14,9 +14,9 @@ form the core values (with an optional fifth for emphasized content).
When it comes to manipulating colors, I recommend using the following online
tools. These resources are excellent for creating tints, shades, and blends,
[maketintshade](https://maketintsandshades.com/)
[pinetools](https://pinetools.com/blend-colors)
[colordesigner](https://colordesigner.io/)
- [maketintshade](https://maketintsandshades.com/)
- [pinetools](https://pinetools.com/blend-colors)
- [colordesigner](https://colordesigner.io/)
Additionally, I provide custom functions for color manipulation within the
plugin. These functions are designed to give users more control over their
@ -48,7 +48,7 @@ colorscheme.
| cyan | #2aa198 | optional |
| green | #859900 | optional |
#### Extra colors
#### Solarized Dark Extra colors
| Name | Hex (balance 70) | Description |
| ----------- | ---------------- | --------------------------------- |
@ -83,6 +83,20 @@ colorscheme.
| cyan | #41c7b9 | optional |
| green | #75b938 | optional |
#### Selenized Dark Extra colors
| Name | Hex (balance 70) | Description |
| ----------- | ---------------- | --------------------------------- |
| base04 | #184956 | sidebar background / float window |
| mix_yellow | #4c5f3f | yellow + base03 / optional |
| mix_orange | #525248 | orange + base03 / optional |
| mix_red | #56444a | red + base03 / optional |
| mix_magenta | #534d6b | magenta + base03 / optional |
| mix_violet | #3f5278 | violet + base03 / optional |
| mix_blue | #20567c | blue + base03 / optional |
| mix_cyan | #1e6569 | cyan + base03 / optional |
| mix_green | #2e6143 | green + base03 / optional |
### Solarized Light
> [!NOTE]
@ -109,6 +123,19 @@ colorscheme.
| cyan | #2aa198 | optional |
| green | #859900 | optional |
#### Solarized Light Extra colors
| Name | Hex (balance 70) | Description |
| ----------- | ---------------- | -------------------------- |
| mix_yellow | #e7d59e | yellow + base3 / optional |
| mix_orange | #eec2a5 | orange + base3 /optional |
| mix_red | #f3bbac | red + base3 / optional |
| mix_magenta | #f0bcc5 | magenta + base3 / optional |
| mix_violet | #d1ced9 | violet + base3 / optional |
| mix_blue | #bcd5dd | blue + base3 / optional |
| mix_cyan | #bddccc | cyan + base3 / optional |
| mix_green | #d9da9e | green + base3 /optional |
### Selenized Light
| Name | Hex | Description |
@ -119,7 +146,7 @@ colorscheme.
| base00 | #53676d | body text / default code / primary content |
| base0 | #adbcbc | none |
| base1 | #909995 | comments / secondary content |
| base2 | #d5cdb6 | background highlights |
| base2 | #ece3cc | background highlights |
| base3 | #fbf3db | background |
| yellow | #ad8900 | optional |
| orange | #c25d1e | optional |
@ -130,7 +157,20 @@ colorscheme.
| cyan | #009c8f | optional |
| green | #489100 | optional |
#### Selenized Light Extra colors
| Name | Hex (balance 70) | Description |
| ----------- | ---------------- | -------------------------- |
| mix_yellow | #e3d399 | yellow + base3 / optional |
| mix_orange | #e9c6a2 | orange + base3 / optional |
| mix_red | #eeb4a6 | red + base3 / optional |
| mix_magenta | #ecbfc6 | magenta + base3 / optional |
| mix_violet | #d8c7d4 | violet + base3 / optional |
| mix_blue | #afccd8 | blue + base3 / optional |
| mix_cyan | #afd8c4 | cyan + base3 / optional |
| mix_green | #c5d599 | green + base3 / optional |
## Solarized & Selenized Website
[ethanschoonover](https://ethanschoonover.com/solarized/)
[jan-warchol](https://github.com/jan-warchol/selenized/blob/master/README.md)
- [ethanschoonover](https://ethanschoonover.com/solarized/)
- [jan-warchol](https://github.com/jan-warchol/selenized/blob/master/README.md)

View file

@ -1 +1,5 @@
require('solarized.config').load()
-- Solarized colorscheme
-- Repo: maxmx03/solarized.nvim
-- Maintainer: Milianor github.com/maxmx03
-- License: MIT License
require('solarized').load()

View file

@ -1,40 +1,78 @@
local palette = require('solarized.palette')
local c = palette.get_colors()
local M = {
normal = {},
ellipsis = { fg = c.base0 },
separator = { link = 'Keyword' },
modified = { fg = c.warning },
dirname = { link = 'Directory' },
basename = { fg = c.base0, bold = true },
context = { fg = c.base0 },
context_file = { fg = c.base0 },
context_module = { link = '@namespace' },
context_namespace = { link = '@namespace' },
context_package = { link = 'Directory' },
context_class = { link = 'Type' },
context_method = { link = 'Function' },
context_property = { link = '@field' },
context_field = { link = '@field' },
context_constructor = { link = '@constructor' },
context_enum = { link = 'Type' },
context_interface = { link = 'Type' },
context_function = { link = 'Function' },
context_variable = { link = 'Identifier' },
context_constant = { link = 'Constant' },
context_string = { link = 'String' },
context_number = { link = 'Number' },
context_boolean = { link = 'Boolean' },
context_array = { link = 'Delimiter' },
context_object = { link = '@field' },
context_key = { link = 'Delimiter' },
context_null = { link = 'Constant' },
context_enum_member = { link = 'Constant' },
context_struct = { link = 'Structure' },
context_event = { fg = c.base2 },
context_operator = { link = 'Operator' },
context_type_parameter = { link = 'Type' },
}
return M
local config = require 'solarized.config'
if vim.o.background == 'dark' then
local palette = require 'solarized.palette'
local c = palette[config.palette]
return {
normal = {},
ellipsis = { fg = c.base0 },
separator = { link = 'Keyword' },
modified = { fg = c.diag_warning },
dirname = { link = 'Directory' },
basename = { fg = c.base0, bold = true },
context = { fg = c.base0 },
context_file = { fg = c.base0 },
context_module = { link = '@namespace' },
context_namespace = { link = '@namespace' },
context_package = { link = 'Directory' },
context_class = { link = 'Type' },
context_method = { link = 'Function' },
context_property = { link = '@field' },
context_field = { link = '@field' },
context_constructor = { link = '@constructor' },
context_enum = { link = 'Type' },
context_interface = { link = 'Type' },
context_function = { link = 'Function' },
context_variable = { link = 'Identifier' },
context_constant = { link = 'Constant' },
context_string = { link = 'String' },
context_number = { link = 'Number' },
context_boolean = { link = 'Boolean' },
context_array = { link = 'Delimiter' },
context_object = { link = '@field' },
context_key = { link = 'Delimiter' },
context_null = { link = 'Constant' },
context_enum_member = { link = 'Constant' },
context_struct = { link = 'Structure' },
context_event = { fg = c.yellow },
context_operator = { link = 'Operator' },
context_type_parameter = { link = 'Type' },
}
else
local palette = require 'solarized.palette.solarized-light'
local c = palette[config.palette]
return {
normal = {},
ellipsis = { fg = c.base00 },
separator = { link = 'Keyword' },
modified = { fg = c.diag_warning },
dirname = { link = 'Directory' },
basename = { fg = c.base0, bold = true },
context = { fg = c.base0 },
context_file = { fg = c.base00 },
context_module = { link = '@namespace' },
context_namespace = { link = '@namespace' },
context_package = { link = 'Directory' },
context_class = { link = 'Type' },
context_method = { link = 'Function' },
context_property = { link = '@field' },
context_field = { link = '@field' },
context_constructor = { link = '@constructor' },
context_enum = { link = 'Type' },
context_interface = { link = 'Type' },
context_function = { link = 'Function' },
context_variable = { link = 'Identifier' },
context_constant = { link = 'Constant' },
context_string = { link = 'String' },
context_number = { link = 'Number' },
context_boolean = { link = 'Boolean' },
context_array = { link = 'Delimiter' },
context_object = { link = '@field' },
context_key = { link = 'Delimiter' },
context_null = { link = 'Constant' },
context_enum_member = { link = 'Constant' },
context_struct = { link = 'Structure' },
context_event = { fg = c.yellow },
context_operator = { link = 'Operator' },
context_type_parameter = { link = 'Type' },
}
end

View file

@ -0,0 +1,47 @@
if vim.o.background == 'dark' then
local palette = require 'solarized.palette'
local c = palette.selenized
return {
normal = {
a = { fg = c.base03, bg = c.blue, gui = 'bold' },
b = { fg = c.base02, bg = c.base1 },
c = { fg = c.base1, bg = c.base02 },
z = { fg = c.base03, bg = c.blue },
},
insert = {
a = { fg = c.base03, bg = c.green },
},
visual = {
a = { fg = c.base03, bg = c.magenta },
},
replace = {
a = { fg = c.base03, bg = c.red },
},
command = {
a = { fg = c.base03, bg = c.orange },
},
}
else
local palette = require 'solarized.palette'
local c = palette.selenized
return {
normal = {
a = { fg = c.base3, bg = c.blue, gui = 'bold' },
b = { fg = c.base2, bg = c.base01 },
c = { fg = c.base01, bg = c.base2 },
z = { fg = c.base3, bg = c.blue },
},
insert = {
a = { fg = c.base3, bg = c.green },
},
visual = {
a = { fg = c.base3, bg = c.magenta },
},
replace = {
a = { fg = c.base3, bg = c.red },
},
command = {
a = { fg = c.base3, bg = c.orange },
},
}
end

View file

@ -1,25 +1,49 @@
local solarized_palette = require('solarized.palette')
local colors = solarized_palette.get_colors()
if vim.o.background == 'dark' then
local palette = require 'solarized.palette'
local c = palette.solarized
return {
normal = {
a = { fg = c.base03, bg = c.blue, gui = 'bold' },
b = { fg = c.base02, bg = c.base1 },
c = { fg = c.base1, bg = c.base02 },
z = { fg = c.base03, bg = c.blue },
},
insert = {
a = { fg = c.base03, bg = c.green },
},
visual = {
a = { fg = c.base03, bg = c.magenta },
},
replace = {
a = { fg = c.base03, bg = c.red },
},
command = {
a = { fg = c.base03, bg = c.orange },
},
}
else
local palette = require 'solarized.palette'
local c = palette.solarized
return {
normal = {
a = { fg = c.base3, bg = c.blue, gui = 'bold' },
b = { fg = c.base2, bg = c.base01 },
c = { fg = c.base01, bg = c.base2 },
z = { fg = c.base3, bg = c.blue },
},
insert = {
a = { fg = c.base3, bg = c.green },
},
visual = {
a = { fg = c.base3, bg = c.magenta },
},
replace = {
a = { fg = c.base3, bg = c.red },
},
command = {
a = { fg = c.base3, bg = c.orange },
},
}
end
local M = {
normal = {
a = { fg = colors.base03, bg = colors.blue, gui = 'bold' },
b = { fg = colors.base02, bg = colors.base1 },
c = { fg = colors.base1, bg = colors.base02 },
z = { fg = colors.base03, bg = colors.blue },
},
insert = {
a = { fg = colors.base03, bg = colors.green },
},
visual = {
a = { fg = colors.base03, bg = colors.magenta },
},
replace = {
a = { fg = colors.base03, bg = colors.red },
},
command = {
a = { fg = colors.base03, bg = colors.orange },
},
}
return M
return theme

View file

@ -1,68 +0,0 @@
local M = {}
function M.load_autocmd()
local group = vim.api.nvim_create_augroup('solarized', { clear = true })
vim.api.nvim_create_autocmd('ColorSchemePre', {
group = group,
callback = function()
vim.api.nvim_del_augroup_by_id(group)
end,
})
vim.api.nvim_create_autocmd('LspTokenUpdate', {
group = group,
callback = function(args)
local token = args.data.token
local buffer = args.buf
local text = vim.api.nvim_buf_get_text(
buffer,
token.line,
token.start_col,
token.line,
token.end_col,
{}
)[1]
local highlights = {
'TODO',
'WARN',
'TEST',
'PERF',
'NOTE',
'HACK',
'FIX',
}
local name = 'SolarizedToken'
for _, group_name in pairs(highlights) do
if
text ~= nil
and token.type == 'comment'
and text:match(group_name)
then
vim.lsp.semantic_tokens.highlight_token(
token,
buffer,
args.data.client_id,
name .. group_name
)
end
end
end,
})
end
function M.load_autocmd_highlights(c)
local set_hl = require('solarized.utils').set_hl
set_hl('SolarizedTokenTODO', { fg = c.info })
set_hl('SolarizedTokenWARN', { fg = c.warning })
set_hl('SolarizedTokenTEST', { fg = c.violet })
set_hl('SolarizedTokenPERF', { fg = c.magenta })
set_hl('SolarizedTokenNOTE', { fg = c.hint })
set_hl('SolarizedTokenHACK', { fg = c.cyan })
set_hl('SolarizedTokenFIX', { fg = c.error })
end
return M

86
lua/solarized/color.lua Normal file
View file

@ -0,0 +1,86 @@
---@class solarized.color
---@field hex_to_rgb fun(hex: string): number, number, number
---@field rgb_to_hex fun(red: number, green: number, blue: number): string
---@field darken fun(hex: string, percentage: number): string
---@field lighten fun(hex: string, percentage: number): string
---@field shade fun(hex: string, i: number): string
---@field tint fun(hex: string, i: number): string
---@field blend fun(fg: string, bg: string, alpha: number): string
local M = {}
function M.hex_to_rgb(hex)
local red = tonumber(hex:sub(2, 3), 16)
local green = tonumber(hex:sub(4, 5), 16)
local blue = tonumber(hex:sub(6, 7), 16)
return red, green, blue
end
function M.rgb_to_hex(red, green, blue)
return string.format('#%02x%02x%02x', red, green, blue)
end
function M.darken(hex, percentage)
local red, green, blue = M.hex_to_rgb(hex)
local i = 1
local result = {
red = red * (1 - (percentage / 100) * i),
green = green * (1 - (percentage / 100) * i),
blue = blue * (1 - (percentage / 100) * i),
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
function M.lighten(color, percentage)
local red, green, blue = M.hex_to_rgb(color)
local i = 1
local result = {
red = red + (255 - red) * i * (percentage / 100),
green = green + (255 - green) * i * (percentage / 100),
blue = blue + (255 - blue) * i * (percentage / 100),
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
function M.shade(hex, i)
local red, green, blue = M.hex_to_rgb(hex)
local result = {
red = red * (1 - 0.1 * i),
green = green * (1 - 0.1 * i),
blue = blue * (1 - 0.1 * i),
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
function M.tint(hex, i)
local red, green, blue = M.hex_to_rgb(hex)
local result = {
red = red + (255 - red) * i * 0.1,
green = green + (255 - green) * i * 0.1,
blue = blue + (255 - blue) * i * 0.1,
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
---@param fg number
---@param bg number
---@param alpha number
---@return number
local function blend_channel(fg, bg, alpha)
local ret = alpha * fg + ((1 - alpha) * bg)
local min = math.min
local max = math.max
local floor = math.floor
return floor(min(max(0, ret), 255) + 0.5)
end
function M.blend(fg, bg, alpha)
local red_bg, green_bg, blue_bg = M.hex_to_rgb(bg)
local red_fg, green_fg, blue_fg = M.hex_to_rgb(fg)
return M.rgb_to_hex(
blend_channel(red_fg, red_bg, alpha),
blend_channel(green_fg, green_bg, alpha),
blend_channel(blue_fg, blue_bg, alpha)
)
end
return M

View file

@ -3,36 +3,42 @@ local command = {
}
local subcommands = {
colors = function(arg)
local palette = require('solarized.palette')
local colors = palette.get_colors()
colors = function(_)
local config = require 'solarized.config'
local palette = require 'solarized.palette'
local colors = palette[config.palette]
local buf = vim.api.nvim_create_buf(true, true)
local max_length = vim.tbl_count(colors)
local function color_desc(color)
local colors_desc = {
base03 = 'background tone (main)',
base02 = 'background tone (highlight/menu/LineNr)',
base01 = 'content tone (comment)',
base00 = 'content tone (winseparator)',
base0 = 'content tone (foreground)',
base1 = 'content tone (statusline/tabline)',
base2 = 'background tone (highlight)',
base3 = 'background tone (main)',
base03 = 'background (dark)',
base02 = 'background highlight (dark)',
base01 = 'comments (dark)',
base00 = 'foreground (light)',
base0 = 'foreground (dark)',
base1 = 'comments (light)',
base2 = ' background highlight (light)',
base3 = 'background (light)',
}
local desc = colors_desc[color]
if not desc then return '' end
if not desc then
return ''
end
return desc
end
local function set_lines(color, hex, line)
vim.api.nvim_buf_set_lines(buf, line, (line + 1), false, {
color .. string.rep('.', max_length - #color) .. ' = "' .. tostring(
hex
) .. '" ' .. color_desc(color),
color
.. string.rep('.', max_length - #color)
.. ' = "'
.. tostring(hex)
.. '" '
.. color_desc(color),
})
return line + 1
end
@ -53,31 +59,6 @@ local subcommands = {
vim.api.nvim_buf_set_name(buf, 'Solarized Colors')
vim.api.nvim_win_set_buf(0, buf)
end,
zen = function()
local colors = require('solarized.palette').get_colors()
local solarized = require('solarized.highlights')
if not command.zen_mode then
local highlights = {
Keyword = { fg = colors.base01 },
['@keyword.return'] = { fg = colors.base01 },
Statement = { fg = colors.base01 },
Delimiter = { fg = colors.base01 },
['@constructor'] = { fg = colors.base01 },
['@tag'] = { fg = colors.base01 },
['Type'] = { fg = colors.base01 },
['@type'] = { fg = colors.base01 },
['@include'] = { fg = colors.base01 },
}
solarized.custom_hl(highlights)
command.zen_mode = true
else
local config = require('solarized.config')
solarized.highlights(colors, config.config or config.default_config())
command.zen_mode = false
end
end,
}
function command.list()

View file

@ -1,104 +1,56 @@
local palette = require('solarized.palette')
local solarized = require('solarized.highlights')
local colorhelper = require('solarized.utils.colors')
local utils = require('solarized.utils')
---@class solarized.styles
---@field types? vim.api.keyset.highlight
---@field functions? vim.api.keyset.highlight
---@field parameters? vim.api.keyset.highlight
---@field comments? vim.api.keyset.highlight
---@field strings? vim.api.keyset.highlight
---@field keywords? vim.api.keyset.highlight
---@field variables? vim.api.keyset.highlight
---@field constants? vim.api.keyset.highlight
local M = {}
---@class solarized.plugins
M.config = nil
M.colors = nil
--- Define and return default config
---@return table default_config
function M.default_config()
return {
transparent = false,
palette = 'solarized', -- selenized
styles = {
comments = {},
functions = {},
variables = {},
numbers = {},
constants = {},
parameters = {},
keywords = {},
types = {},
},
enables = {
bufferline = true,
cmp = true,
diagnostic = true,
dashboard = true,
editor = true,
gitsign = true,
hop = true,
indentblankline = true,
lsp = true,
lspsaga = true,
navic = true,
neogit = true,
neotree = true,
notify = true,
noice = true,
semantic = true,
syntax = true,
telescope = true,
tree = true,
treesitter = true,
todo = true,
whichkey = true,
mini = true,
},
highlights = {},
colors = {},
theme = 'default',
autocmd = true,
}
end
function M.load()
if vim.g.colors_name then vim.cmd('hi clear') end
if vim.fn.exists('syntax_on') then vim.cmd('syntax reset') end
vim.o.termguicolors = true
vim.g.colors_name = 'solarized'
local colors = {}
colors = palette.get_colors()
solarized.highlights(M.colors or colors, M.config or M.default_config())
end
--- Solarized setup
---
--- @param opts? table The user-provided configuration to be merged.
--- - transparent (boolean): Specifies if transparency is enabled.
--- - styles (table): A table specifying various style options.
--- - comments (table): Specifies if comments should be styled.
--- - functions (table): Specifies if functions should be styled.
--- - variables (table): Specifies if variables should be styled.
--- - numbers (table): Specifies if numbers should be styled.
--- - constants (table): Specifies if constants should be styled.
--- - parameters (table): Specifies if parameters should be styled.
--- - conditionals (table): Specifies if conditionals should be styled.
--- - highlights (table): A table specifying custom highlight values.
--- - colors (table): A table specifying custom color values.
--- - enables (table): A table specifying plugins to be enabled or disabled
--- - theme (string): Specifies the theme to be used.
function M.setup(opts)
M.config = vim.tbl_deep_extend('force', M.default_config(), opts or {})
local colors = palette.get_colors()
utils.on_config({
tbl = function()
M.colors = palette.extend_colors(colors, M.config.colors)
end,
fnc = function()
M.colors =
palette.extend_colors(colors, M.config.colors(colors, colorhelper))
end,
}, M.config.colors)
end
return M
---@class solarized.config
---@field transparent? boolean
---@field on_highlights? fun(colors: solarized.palette, color: solarized.color): solarized.highlights
---@field on_colors? fun(colors: solarized.palette, color: solarized.color): solarized.palette
---@field styles? solarized.styles
---@field palette? "solarized" | "selenized"
---@field plugins? solarized.plugins
return {
transparent = false,
on_highlights = nil,
on_colors = nil,
palette = 'solarized',
styles = {
types = {},
functions = {},
parameters = {},
comments = {},
strings = {},
keywords = {},
variables = {},
constants = {},
},
plugins = {
['nvim-treesitter'] = true,
['nvim-lspconfig'] = true,
['nvim-navic'] = true,
['nvim-cmp'] = true,
['indent-blankline.nvim'] = true,
['neo-tree.nvim'] = true,
['nvim-tree.lua'] = true,
['which-key.nvim'] = true,
['dashboard-nvim'] = true,
['gitsigns.nvim'] = true,
['telescope.nvim'] = true,
['noice.nvim'] = true,
['hop.nvim'] = true,
['mini.statusline'] = true,
['mini.tabline'] = true,
['mini.starter'] = true,
['mini.cursorword'] = true,
['nvim-notify'] = true,
['rainbow-delimiters'] = true,
},
}

View file

@ -1,69 +0,0 @@
local utils = require('solarized.utils')
local colorhelper = require('solarized.utils.colors')
local M = {}
--- Update or override highlights defined by the user
---
--- @param highlights table A table containing highlight names as keys and their updated values as values
function M.custom_hl(highlights)
local get_hl = utils.get_hl
for highlight_name, highlight_value in pairs(highlights) do
local highlight = get_hl(highlight_name)
local val = {}
if highlight_value.link then
val = highlight_value
else
val = vim.tbl_extend('force', highlight, highlight_value)
end
vim.api.nvim_set_hl(0, highlight_name, val)
end
end
--- Load and apply highlights based on the enabled highlights specified in the configuration
---
--- @param colors table A table containing color values
--- @param config table A table containing configuration options, including the enabled highlights and theme
function M.load_plugins(colors, config)
for plugin, enabled in pairs(config.enables) do
if enabled then
local highlight_groups =
require(string.format('solarized.themes.%s.%s', config.theme, plugin))
highlight_groups(colors, config)
end
end
end
--- Set highlights based on the provided colors and configuration
---
--- @param colors table A table containing color values
--- @param config table A table containing configuration options
function M.highlights(colors, config)
if config.theme == 'neo' or config.theme == 'default' then
M.load_plugins(colors, config)
else
config.theme = 'default'
M.load_plugins(colors, config)
end
if vim.fn.has('nvim-0.9.4') and config.autocmd then
local extras = require('solarized.autocmd')
extras.load_autocmd()
extras.load_autocmd_highlights(colors)
end
utils.on_config({
tbl = function()
M.custom_hl(config.highlights)
end,
fnc = function()
M.custom_hl(config.highlights(colors, colorhelper))
end,
}, config.highlights)
end
return M

View file

@ -0,0 +1,880 @@
---@class solarized.highlights
---@field ColorColumn? table
---@field Conceal? table
---@field CurSearch? table
---@field Cursor? table
---@field lCursor? table
---@field CursorIM? table
---@field CursorColumn? table
---@field CursorLine? table
---@field Directory? table
---@field DiffAdd? table
---@field DiffChange? table
---@field DiffDelete? table
---@field DiffText? table
---@field EndOfBuffer? table
---@field TermCursor? table
---@field TermCursorNC? table
---@field ErrorMsg? table
---@field WinSeparator? table
---@field Folded? table
---@field FoldColumn? table
---@field SignColumn? table
---@field IncSearch? table
---@field Substitute? table
---@field LineNr? table
---@field LineNrAbove? table
---@field LineNrBelow? table
---@field CursorLineNr? table
---@field CursorLineFold? table
---@field CursorLineSign? table
---@field MatchParen? table
---@field ModeMsg? table
---@field MsgArea? table
---@field MsgSeparator? table
---@field MoreMsg? table
---@field NonText? table
---@field Normal? table
---@field NormalFloat? table
---@field FloatBorder? table
---@field FloatTitle? table
---@field NormalNC? table
---@field Pmenu? table
---@field PmenuSel? table
---@field PmenuKind? table
---@field PmenuKindSel? table
---@field PmenuExtra? table
---@field PmenuExtraSel? table
---@field PmenuSbar? table
---@field PmenuThumb? table
---@field Question? table
---@field QuickFixLine? table
---@field Search? table
---@field SpecialKey? table
---@field SpellBad? table
---@field SpellCap? table
---@field SpellLocal? table
---@field SpellRare? table
---@field StatusLine? table
---@field StatusLineNC? table
---@field TabLine? table
---@field TabLineFill? table
---@field TabLineSel? table
---@field Title? table
---@field Visual? table
---@field VisualNOS? table
---@field warningMsg? table
---@field Whitespace? table
---@field WildMenu? table
---@field WinBar? table
---@field WinBarNC? table
---@field Comment? table
---@field Constant? table
---@field String? table
---@field Character? table
---@field Number? table
---@field Boolean? table
---@field Float? table
---@field Identifier? table
---@field Function? table
---@field Statement? table
---@field Conditional? table
---@field Repeat? table
---@field Label? table
---@field Operator? table
---@field Keyword? table
---@field Exception? table
---@field PreProc? table
---@field Include? table
---@field Define? table
---@field Macro? table
---@field PreCondit? table
---@field Type? table
---@field StorageClass? table
---@field Structure? table
---@field Typedef? table
---@field Special? table
---@field SpecialChar? table
---@field Tag? table
---@field Delimiter? table
---@field SpecialComment? table
---@field Debug? table
---@field Underlined? table
---@field Ignore? table
---@field Error? table
---@field Todo? table
---@field Added? table
---@field Changed? table
---@field Removed? table
---@field DiagnosticError? table
---@field DiagnosticWarn? table
---@field DiagnosticInfo? table
---@field DiagnosticHint? table
---@field DiagnosticOk? table
---@field DiagnosticVirtualTextError? table
---@field DiagnosticVirtualTextWarn? table
---@field DiagnosticVirtualTextInfo? table
---@field DiagnosticVirtualTextHint? table
---@field DiagnosticVirtualTextOk? table
---@field DiagnosticUnderlineError? table
---@field DiagnosticUnderlineWarn? table
---@field DiagnosticUnderlineInfo? table
---@field DiagnosticUnderlineHint? table
---@field DiagnosticUnderlineOk? table
---@field LspReferenceText? table
---@field LspReferenceRead? table
---@field LspReferenceWrite? table
---@field LspInlayHint? table
---@field NavicText? table
---@field NavicSeparator? table
---@field NavicIconsMethod? table
---@field NavicIconsFunction? table
---@field NavicIconsField? table
---@field NavicIconsVariable? table
---@field NavicIconsClass? table
---@field NavicIconsInterface? table
---@field NavicIconsModule? table
---@field NavicIconsNamespace? table
---@field NavicIconsProperty? table
---@field NavicIconsUnit? table
---@field NavicIconsEnum? table
---@field NavicIconsKeyword? table
---@field NavicIconsSnippet? table
---@field NavicIconsColor? table
---@field NavicIconsFile? table
---@field NavicIconsReference? table
---@field NavicIconsFolder? table
---@field NavicIconsEnumMember? table
---@field NavicIconsConstant? table
---@field NavicIconsStruct? table
---@field NavicIconsEvent? table
---@field NavicIconsOperator? table
---@field NavicIconsTypeParameter? table
---@field CmpItemKindText? table
---@field CmpItemKindMethod? table
---@field CmpItemKindFunction? table
---@field CmpItemKindField? table
---@field CmpItemKindVariable? table
---@field CmpItemKindClass? table
---@field CmpItemKindInterface? table
---@field CmpItemKindModule? table
---@field CmpItemKindProperty? table
---@field CmpItemKindUnit? table
---@field CmpItemKindEnum? table
---@field CmpItemKindKeyword? table
---@field CmpItemKindSnippet? table
---@field CmpItemKindColor? table
---@field CmpItemKindFile? table
---@field CmpItemKindReference? table
---@field CmpItemKindFolder? table
---@field CmpItemKindEnumMember? table
---@field CmpItemKindConstant? table
---@field CmpItemKindStruct? table
---@field CmpItemKindEvent? table
---@field CmpItemKindOperator? table
---@field CmpItemKindTypeParameter? table
---@field IblIndent? table
---@field IblScope? table
---@field NeoTreeNormal? table
---@field NeoTreeNormalNC? table
---@field NeoTreeDotFile? table
---@field NeoTreeFileNameOpened? table
---@field NeoTreeFloatBorder? table
---@field NeoTreeFloatTitle? table
---@field NeoTreeGitAdded? table
---@field NeoTreeGitConflict? table
---@field NeoTreeGitDeleted? table
---@field NeoTreeGitIgnored? table
---@field NeoTreeGitModified? table
---@field NeoTreeGitUnstaged? table
---@field NeoTreeGitUntracked? table
---@field NeoTreeGitStaged? table
---@field NvimTreeSymlink? table
---@field NvimTreeSymlinkIcon? table
---@field NvimTreeFolderName? table
---@field NvimTreeRootFolder? table
---@field NvimTreeFolderIcon? table
---@field NvimTreeEmptyFolderName? table
---@field NvimTreeExecFile? table
---@field NvimTreeOpenedFile? table
---@field NvimTreeModifiedFile? table
---@field NvimTreeSpecialFile? table
---@field NvimTreeIndentMarker? table
---@field NvimTreeGitDirty? table
---@field NvimTreeGitStaged? table
---@field NvimTreeGitMerge? table
---@field NvimTreeGitRenamed? table
---@field NvimTreeGitNew? table
---@field NvimTreeGitDeleted? table
---@field NvimTreeNormal? table
---@field NvimTreeNormalFloat? table
---@field NvimTreeEndOfBuffer? table
---@field NvimTreeWinSeparator? table
---@field WhichKeyNormal? table
---@field WhichKey? table
---@field WhichKeyDesc? table
---@field WhichKeySeparator? table
---@field WhichKeyGroup? table
---@field DashboardHeader? table
---@field DashboardFooter? table
---@field DashboardDesc? table
---@field DashboardKey? table
---@field DashboardIcon? table
---@field DashboardShotCut? table
---@field GitSignsAdd? table
---@field GitSignsChange? table
---@field GitSignsDelete? table
---@field TelescopeSelection? table
---@field TelescopeSelectionCaret? table
---@field TelescopeMultiIcon? table
---@field TelescopeNormal? table
---@field TelescopePreviewNormal? table
---@field TelescopePromptNormal? table
---@field TelescopeResultsNormal? table
---@field TelescopeBorder? table
---@field TelescopePromptBorder? table
---@field TelescopeResultsBorder? table
---@field TelescopePreviewBorder? table
---@field TelescopeTitle? table
---@field TelescopePromptTitle? table
---@field TelescopeResultsTitle? table
---@field TelescopePreviewTitle? table
---@field TelescopeMatching? table
---@field TelescopePreviewMatch? table
---@field TelescopePromptCounter? table
---@field TelescopePromptPrefix? table
---@field NoiceFormatProgressTodo? table
---@field NoiceFormatProgressDone? table
---@field NoiceLspProgressSpinner? table
---@field NoiceLspProgressClient? table
---@field NoiceLspProgressTitle? table
---@field HopNextKey? table
---@field HopNextKey1? table
---@field HopUnmatched? table
---@field MiniStatuslineModeNormal? table
---@field MiniStatuslineModeInsert? table
---@field MiniStatuslineModeVisual? table
---@field MiniStatuslineModeReplace? table
---@field MiniStatuslineModeCommand? table
---@field MinistatusLineFileName? table
---@field MiniStatuslineDevinfo? table
---@field MiniStatuslineFileinfo? table
---@field MiniStatuslineInactive? table
---@field MiniTablineCurrent? table
---@field MiniTablineVisible? table
---@field MiniTablineHidden? table
---@field MiniTablineModifiedCurrent? table
---@field MiniTablineModifiedVisible? table
---@field MiniTablineModifiedHidden? table
---@field MiniTablineFill? table
---@field MiniTablineTabpagesection? table
---@field MiniStarterCurrent? table
---@field MiniStarterHeader? table
---@field MiniStarterFooter? table
---@field MiniStarterItem? table
---@field MiniStarterItemBullet? table
---@field MiniStarterItemPrefix? table
---@field MiniStarterSection? table
---@field MiniStarterQuery? table
---@field MiniCursorword? table
---@field NotifyBackground? table
---@field NotifyERRORBorder? table
---@field NotifyWARNBorder? table
---@field NotifyINFOBorder? table
---@field NotifyDEBUGBorder? table
---@field NotifyTRACEBorder? table
---@field NotifyERRORIcon? table
---@field NotifyWARNIcon? table
---@field NotifyINFOIcon? table
---@field NotifyDEBUGIcon? table
---@field NotifyTRACEIcon? table
---@field NotifyERRORTitle? table
---@field NotifyWARNTitle? table
---@field NotifyINFOTitle? table
---@field NotifyDEBUGTitle? table
---@field NotifyTRACETitle? table
---@field NotifyERRORBody? table
---@field NotifyWARNBody? table
---@field NotifyINFOBody? table
---@field NotifyDEBUGBody? table
---@field NotifyTRACEBody? table
---@field RainbowDelimiterRed? table
---@field RainbowDelimiteYellow? table
---@field RainbowDelimiterBlue? table
---@field RainbowDelimiterOrange? table
---@field RainbowDelimiterGreen? table
---@field RainbowDelimiterViolet? table
---@field RainbowDelimiterCyan? table
local M = {}
local function nvim_get_hl(opts)
local hl = vim.api.nvim_get_hl(0, opts)
if hl.link then
return nvim_get_hl { name = hl.link }
end
return hl
end
---@class solarized.nvim_set_hl.config
---@field transparent? boolean
---@field styles? vim.api.keyset.highlight
---@param group_name string
---@param group_val vim.api.keyset.highlight
---@param config? solarized.nvim_set_hl.config
local nvim_set_hl = function(group_name, group_val, config)
local val = { fg = 'NONE', bg = 'NONE' }
if not group_val.link then
if config and config.transparent then
group_val.bg = 'NONE'
end
if config and config.styles then
group_val = vim.tbl_extend('force', group_val, config.styles)
end
val = vim.tbl_extend('force', val, group_val)
vim.api.nvim_set_hl(0, group_name, val)
else
vim.api.nvim_set_hl(0, group_name, group_val)
end
end
---@param colors solarized.palette
---@param config solarized.config
M.set_highlight = function(colors, config)
if config.on_colors then
local color = require 'solarized.color'
colors = vim.tbl_extend('force', colors, config.on_colors(colors, color))
end
-- EDITOR :h highlight-groups
nvim_set_hl('ColorColumn', { bg = colors.base04 })
nvim_set_hl('Conceal', { fg = colors.blue })
nvim_set_hl('CurSearch', { link = 'IncSearch' })
nvim_set_hl('Cursor', { fg = colors.base03, bg = colors.base0 })
nvim_set_hl('lCursor', { link = 'Cursor' })
nvim_set_hl('CursorIM', { link = 'Cursor' })
nvim_set_hl('CursorColumn', { link = 'ColorColumn' })
nvim_set_hl('CursorLine', { bg = colors.base02 })
nvim_set_hl('Directory', { fg = colors.blue })
nvim_set_hl('DiffAdd', { fg = colors.git_add })
nvim_set_hl('DiffChange', { fg = colors.git_modify })
nvim_set_hl('DiffDelete', { fg = colors.git_delete, reverse = true })
nvim_set_hl('DiffText', { fg = colors.cyan, reverse = true })
nvim_set_hl('EndOfBuffer', { fg = colors.base03 })
nvim_set_hl('TermCursor', { link = 'Cursor' })
nvim_set_hl('TermCursorNC', { fg = colors.base03, bg = colors.base0 })
nvim_set_hl('ErrorMsg', { fg = colors.diag_error })
nvim_set_hl(
'WinSeparator',
{ fg = colors.cyan, bg = colors.base04 },
{ transparent = config.transparent }
)
nvim_set_hl('Folded', { fg = colors.base0, bg = colors.base02 })
nvim_set_hl('FoldColumn', { fg = colors.base0, bg = colors.base04 })
nvim_set_hl('SignColumn', { link = 'Normal' })
nvim_set_hl(
'IncSearch',
{ fg = colors.cyan, bg = colors.mix_cyan, bold = true },
{ transparent = config.transparent }
)
nvim_set_hl('Substitute', { link = 'IncSearch' })
nvim_set_hl(
'LineNr',
{ fg = colors.base01, bg = colors.base02 },
{ transparent = config.transparent }
)
nvim_set_hl('LineNrAbove', { link = 'LineNr' })
nvim_set_hl('LineNrBelow', { link = 'LineNr' })
nvim_set_hl(
'CursorLineNr',
{ fg = colors.base1, bg = colors.base02 },
{ transparent = config.transparent }
)
nvim_set_hl('CursorLineFold', { link = 'FoldColumn' })
nvim_set_hl('CursorLineSign', { link = 'SignColumn' })
nvim_set_hl('MatchParen', { fg = colors.cyan })
nvim_set_hl('ModeMsg', { fg = colors.blue })
nvim_set_hl('MsgArea', { link = 'Normal' })
nvim_set_hl('MsgSeparator', { link = 'Normal' })
nvim_set_hl('MoreMsg', { link = 'ModeMsg' })
nvim_set_hl('NonText', { fg = colors.base01 })
nvim_set_hl(
'Normal',
{ fg = colors.base0, bg = colors.base03 },
{ transparent = config.transparent }
)
nvim_set_hl(
'NormalFloat',
{ fg = colors.base0, bg = colors.base04 },
{ transparent = config.transparent }
)
nvim_set_hl('FloatBorder', { link = 'WinSeparator' })
nvim_set_hl('FloatTitle', { fg = colors.blue })
nvim_set_hl('NormalNC', { link = 'Normal' })
nvim_set_hl(
'Pmenu',
{ fg = colors.base0, bg = colors.base04 },
{ transparent = config.transparent }
)
nvim_set_hl('PmenuSel', { fg = colors.blue, reverse = true })
nvim_set_hl('PmenuKind', { link = 'Pmenu' })
nvim_set_hl('PmenuKindSel', { link = 'PmenuSel' })
nvim_set_hl('PmenuExtra', { link = 'Pmenu' })
nvim_set_hl('PmenuExtraSel', { link = 'PmenuSel' })
nvim_set_hl('PmenuSbar', { bg = colors.base04 })
nvim_set_hl('PmenuThumb', { bg = colors.blue })
nvim_set_hl('Question', { fg = colors.diag_info })
nvim_set_hl('QuickFixLine', { fg = colors.base0, bg = colors.base03 })
nvim_set_hl('Search', { fg = colors.violet, bg = colors.mix_violet })
nvim_set_hl('SpecialKey', { link = 'NonText' })
nvim_set_hl('SpellBad', { underline = true, strikethrough = true })
nvim_set_hl('SpellCap', { fg = colors.diag_hint })
nvim_set_hl('SpellLocal', { link = 'SpellCap' })
nvim_set_hl('SpellRare', { fg = colors.diag_warning })
nvim_set_hl('StatusLine', { fg = colors.base1, bg = colors.base04 })
nvim_set_hl('StatusLineNC', { fg = colors.base01, bg = colors.base04 })
nvim_set_hl('TabLine', { fg = colors.base01, bg = colors.base04 })
nvim_set_hl('TabLineFill', { fg = colors.base0, bg = colors.base04 })
nvim_set_hl('TabLineSel', { fg = colors.base0, bg = colors.base03 })
nvim_set_hl('Title', { fg = colors.blue })
nvim_set_hl('Visual', { bg = colors.mix_cyan })
nvim_set_hl('VisualNOS', { link = 'Visual' })
nvim_set_hl('warningMsg', { fg = colors.diag_warning })
nvim_set_hl('Whitespace', { fg = colors.base01 })
nvim_set_hl('WildMenu', { fg = colors.base02 })
nvim_set_hl('WinBar', { link = 'Pmenu' })
nvim_set_hl('WinBarNC', { link = 'WinBar' }) -- SYNTAX :h group-name
nvim_set_hl('Comment', { fg = colors.base01 })
nvim_set_hl('Constant', { fg = colors.violet })
nvim_set_hl('String', { fg = colors.cyan })
nvim_set_hl('Character', { link = 'String' })
nvim_set_hl('Number', { link = 'Constant' })
nvim_set_hl('Boolean', { link = 'Constant' })
nvim_set_hl('Float', { link = 'Constant' })
nvim_set_hl('Identifier', { fg = colors.blue })
nvim_set_hl('Function', { link = 'Identifier' })
nvim_set_hl('Statement', { fg = colors.green })
nvim_set_hl('Conditional', { link = 'Statement' })
nvim_set_hl('Repeat', { link = 'Statement' })
nvim_set_hl('Label', { link = 'Statement' })
nvim_set_hl('Operator', { link = 'Statement' })
nvim_set_hl('Keyword', { fg = colors.base1, bold = true })
nvim_set_hl('Exception', { link = 'Statement' })
nvim_set_hl('PreProc', { link = 'Statement' })
nvim_set_hl('Include', { link = 'Statement' })
nvim_set_hl('Define', { link = 'Statement' })
nvim_set_hl('Macro', { link = 'Statement' })
nvim_set_hl('PreCondit', { link = 'Statement' })
nvim_set_hl('Type', { fg = colors.orange })
nvim_set_hl('StorageClass', { link = 'Statement' })
nvim_set_hl('Structure', { link = 'Type' })
nvim_set_hl('Typedef', { link = 'Statement' })
nvim_set_hl('Special', { fg = colors.violet })
nvim_set_hl('SpecialChar', { fg = colors.violet })
nvim_set_hl('Tag', { fg = colors.blue })
nvim_set_hl('Delimiter', { fg = colors.base01 })
nvim_set_hl('SpecialComment', { link = 'Statement' })
nvim_set_hl('Debug', { fg = colors.magenta })
nvim_set_hl('Underlined', { fg = colors.magenta, underline = true })
nvim_set_hl('Ignore', {})
nvim_set_hl('Error', { fg = colors.diag_error, bold = true })
nvim_set_hl('Todo', { fg = colors.blue })
nvim_set_hl('Added', { fg = colors.git_add })
nvim_set_hl('Changed', { fg = colors.git_modify })
nvim_set_hl('Removed', { fg = colors.git_delete })
-- PLUGINS
if config.plugins['nvim-treesitter'] then
nvim_set_hl('@variable', { link = 'Identifier' })
nvim_set_hl('@variable.builtin', { link = 'Constant' })
nvim_set_hl('@variable.parameter', { fg = colors.blue, italic = true })
nvim_set_hl('@variable.member', { link = 'Identifier' })
nvim_set_hl('@constant', { link = 'Constant' })
nvim_set_hl('@constant.builtin', { link = 'Constant' })
nvim_set_hl('@constant.macro', { link = 'Constant' })
nvim_set_hl('@module', { link = 'Identifier' })
nvim_set_hl('@module.builtin', { link = 'Constant' })
nvim_set_hl('@label', { link = 'Statement' })
nvim_set_hl('@string', { link = 'String' })
nvim_set_hl('@string.documentation', { link = 'Statement' })
nvim_set_hl('@string.regexp', { fg = colors.magenta })
nvim_set_hl('@string.escape', { link = 'Statement' })
nvim_set_hl('@string.special', { link = 'Special' })
nvim_set_hl('@string.special.symbol', { link = 'Identifier' })
nvim_set_hl('@string.special.url', { link = 'Underlined' })
nvim_set_hl('@character', { link = 'Constant' })
nvim_set_hl('@character.special', { link = 'Constant' })
nvim_set_hl('@character.printf', { link = 'Keyword' })
nvim_set_hl('@type', { link = 'Type' })
nvim_set_hl('@type.builtin', { link = 'Keyword' })
nvim_set_hl('@type.definition', { link = 'Type' })
nvim_set_hl('@type.qualifier', { link = 'Type' })
nvim_set_hl('@function', { link = 'Function' })
nvim_set_hl('@function.builtin', { fg = colors.yellow })
nvim_set_hl('@function.call', { link = 'Function' })
nvim_set_hl('@function.macro', { link = 'Function' })
nvim_set_hl('@function.method', { link = 'Function' })
nvim_set_hl('@function.method.call', { link = 'Function' })
nvim_set_hl('@constructor', { link = 'Type' })
nvim_set_hl('@constructor.lua', { link = 'Delimiter' })
nvim_set_hl('@operator', { link = 'Statement' })
nvim_set_hl('@keyword', { link = 'Keyword' })
nvim_set_hl('@keyword.coroutine', { link = 'Statement' })
nvim_set_hl('@keyword.function', { link = 'Statement' })
nvim_set_hl('@keyword.operator', { link = 'Statement' })
nvim_set_hl('@keyword.import', { link = 'Keyword' })
nvim_set_hl('@keyword.repeat', { link = 'Statement' })
nvim_set_hl('@keyword.return', { link = 'Keyword' })
nvim_set_hl('@keyword.debug', { link = 'Keyword' })
nvim_set_hl('@keyword.exception', { link = 'Statement' })
nvim_set_hl('@keyword.conditional', { link = 'Statement' })
nvim_set_hl('@keyword.conditional.ternary', { link = 'Statement' })
nvim_set_hl('@keyword.directive', { link = 'Statement' })
nvim_set_hl('@keyword.directive.define', { link = 'Statement' })
nvim_set_hl('@punctuation.delimiter', { link = 'Delimiter' })
nvim_set_hl('@punctuation.bracket', { link = 'Delimiter' })
nvim_set_hl('@punctuation.special', { link = 'Keyword' })
nvim_set_hl('@comment', { link = 'Comment' })
nvim_set_hl('@comment.documentation', { link = 'Comment' })
nvim_set_hl('@comment.error', { fg = colors.diag_error })
nvim_set_hl('@comment.warning', { fg = colors.diag_warning })
nvim_set_hl('@comment.todo', { link = 'Todo' })
nvim_set_hl('@comment.note', { fg = colors.diag_hint })
nvim_set_hl('@markup.strong', { fg = colors.magenta, bold = true })
nvim_set_hl('@markup.italic', { link = 'Underlined' })
nvim_set_hl('@markup.strikethrough', { fg = colors.base01, strikethrough = true })
nvim_set_hl('@markup.underline', { link = 'Underlined' })
nvim_set_hl('@markup.heading', { fg = colors.blue, bold = true })
nvim_set_hl('@markup.heading.1', { fg = colors.blue })
nvim_set_hl('@markup.heading.2', { fg = colors.violet })
nvim_set_hl('@markup.heading.3', { fg = colors.yellow })
nvim_set_hl('@markup.heading.4', { fg = colors.orange })
nvim_set_hl('@markup.heading.5', { fg = colors.red })
nvim_set_hl('@markup.heading.6', { fg = colors.magenta })
nvim_set_hl('@markup.quote', { fg = colors.green })
nvim_set_hl('@markup.math', { fg = colors.violet })
nvim_set_hl('@markup.environment', { link = 'Comment' })
nvim_set_hl('@markup.link', { link = 'Underlined' })
nvim_set_hl('@markup.link.label', { link = 'Constant' })
nvim_set_hl('@markup.link.url', { link = 'Underlined' })
nvim_set_hl('@markup.raw', { fg = colors.cyan })
nvim_set_hl('@markup.raw.block', { fg = colors.base0 })
nvim_set_hl('@markup.list', { fg = colors.orange })
nvim_set_hl('@markup.list.checked', { fg = colors.green })
nvim_set_hl('@markup.list.unchecked', { fg = colors.base01 })
nvim_set_hl('@diff.plus', { fg = colors.git_add })
nvim_set_hl('@diff.minus', { fg = colors.git_delete })
nvim_set_hl('@diff.delta', { fg = colors.git_modify })
nvim_set_hl('@tag', { fg = colors.blue })
nvim_set_hl('@tag.attribute', { fg = colors.base1 })
nvim_set_hl('@tag.delimiter', { link = 'Delimiter' })
end
if config.plugins['nvim-lspconfig'] then
nvim_set_hl('@lsp.type.class', { link = 'Type' })
nvim_set_hl('@lsp.type.decorator', { link = 'Function' })
nvim_set_hl('@lsp.type.enum', { link = 'Type' })
nvim_set_hl('@lsp.type.enumMember', { link = 'Type' })
nvim_set_hl('@lsp.type.interface', { link = 'Type' })
nvim_set_hl('@lsp.type.macro', { link = 'Keyword' })
nvim_set_hl('@lsp.type.namespace', { link = 'Type' })
nvim_set_hl('@lsp.type.parameter', { link = '@parameter' })
nvim_set_hl('@lsp.type.property', { link = 'Identifier' })
nvim_set_hl('@lsp.type.struct', { link = 'Type' })
nvim_set_hl('@lsp.type.type', { link = 'Type' })
nvim_set_hl('@lsp.type.typeParameter', { link = 'Type' })
nvim_set_hl('@lsp.type.variable', { link = 'Identifier' })
nvim_set_hl('@lsp.typemod.variable.defaultLibrary', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.variable.readonly', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.variable.global', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.keyword.documentation', { link = 'Keyword' })
nvim_set_hl('@lsp.typemod.class.documentation', { link = 'Type' })
nvim_set_hl('@lsp.typemod.property.readonly', { link = 'Constant' })
nvim_set_hl('DiagnosticError', { fg = colors.diag_error })
nvim_set_hl('DiagnosticWarn', { fg = colors.diag_warning })
nvim_set_hl('DiagnosticInfo', { fg = colors.diag_info })
nvim_set_hl('DiagnosticHint', { fg = colors.diag_hint })
nvim_set_hl('DiagnosticOk', { fg = colors.diag_ok })
nvim_set_hl('DiagnosticVirtualTextError', { fg = colors.diag_error, bg = colors.mix_red })
nvim_set_hl('DiagnosticVirtualTextWarn', { fg = colors.diag_warning, bg = colors.mix_yellow })
nvim_set_hl('DiagnosticVirtualTextInfo', { fg = colors.diag_info, bg = colors.mix_violet })
nvim_set_hl('DiagnosticVirtualTextHint', { fg = colors.diag_hint, bg = colors.mix_violet })
nvim_set_hl('DiagnosticVirtualTextOk', { fg = colors.diag_ok, bg = colors.mix_green })
nvim_set_hl('DiagnosticUnderlineError', { fg = colors.diag_error, underline = true })
nvim_set_hl('DiagnosticUnderlineWarn', { fg = colors.diag_warning, underline = true })
nvim_set_hl('DiagnosticUnderlineInfo', { fg = colors.diag_info, underline = true })
nvim_set_hl('DiagnosticUnderlineHint', { fg = colors.diag_hint, underline = true })
nvim_set_hl('DiagnosticUnderlineOk', { fg = colors.diag_ok, underline = true })
nvim_set_hl('LspReferenceText', { link = 'Visual' })
nvim_set_hl('LspReferenceRead', { link = 'Visual' })
nvim_set_hl('LspReferenceWrite', { link = 'Visual' })
nvim_set_hl('LspInlayHint', { fg = colors.base01 })
end
if config.plugins['nvim-navic'] then
nvim_set_hl('NavicText', { fg = colors.base0 })
nvim_set_hl('NavicSeparator', { link = 'Keyword' })
nvim_set_hl('NavicIconsMethod', { link = 'Function' })
nvim_set_hl('NavicIconsFunction', { link = 'Function' })
nvim_set_hl('NavicIconsField', { link = 'Identifier' })
nvim_set_hl('NavicIconsVariable', { link = 'Identifier' })
nvim_set_hl('NavicIconsClass', { link = 'Type' })
nvim_set_hl('NavicIconsInterface', { link = 'Type' })
nvim_set_hl('NavicIconsModule', { link = 'Type' })
nvim_set_hl('NavicIconsNamespace', { link = 'Type' })
nvim_set_hl('NavicIconsProperty', { link = 'Identifier' })
nvim_set_hl('NavicIconsUnit', { link = 'Number' })
nvim_set_hl('NavicIconsEnum', { link = 'Type' })
nvim_set_hl('NavicIconsKeyword', { link = 'Keyword' })
nvim_set_hl('NavicIconsSnippet', { link = 'Tag' })
nvim_set_hl('NavicIconsColor', { fg = colors.orange })
nvim_set_hl('NavicIconsFile', { link = 'Identifier' })
nvim_set_hl('NavicIconsReference', { link = 'Underlined' })
nvim_set_hl('NavicIconsFolder', { link = 'Directory' })
nvim_set_hl('NavicIconsEnumMember', { link = 'Constant' })
nvim_set_hl('NavicIconsConstant', { link = 'Constant' })
nvim_set_hl('NavicIconsStruct', { link = 'Identifier' })
nvim_set_hl('NavicIconsEvent', { link = 'Function' })
nvim_set_hl('NavicIconsOperator', { link = 'Operator' })
nvim_set_hl('NavicIconsTypeParameter', { link = 'Type' })
end
if config.plugins['nvim-cmp'] then
nvim_set_hl('CmpItemKindText', { link = 'String' })
nvim_set_hl('CmpItemKindMethod', { link = 'Function' })
nvim_set_hl('CmpItemKindFunction', { link = 'Function' })
nvim_set_hl('CmpItemKindField', { link = 'Identifier' })
nvim_set_hl('CmpItemKindVariable', { link = 'Identifier' })
nvim_set_hl('CmpItemKindClass', { link = 'Type' })
nvim_set_hl('CmpItemKindInterface', { link = 'Type' })
nvim_set_hl('CmpItemKindModule', { link = 'Type' })
nvim_set_hl('CmpItemKindProperty', { link = 'Identifier' })
nvim_set_hl('CmpItemKindUnit', { link = 'Number' })
nvim_set_hl('CmpItemKindEnum', { link = 'Type' })
nvim_set_hl('CmpItemKindKeyword', { link = 'Keyword' })
nvim_set_hl('CmpItemKindSnippet', { link = 'Tag' })
nvim_set_hl('CmpItemKindColor', { fg = colors.orange })
nvim_set_hl('CmpItemKindFile', { link = 'Identifier' })
nvim_set_hl('CmpItemKindReference', { link = 'Underlined' })
nvim_set_hl('CmpItemKindFolder', { link = 'Directory' })
nvim_set_hl('CmpItemKindEnumMember', { link = 'Constant' })
nvim_set_hl('CmpItemKindConstant', { link = 'Constant' })
nvim_set_hl('CmpItemKindStruct', { link = 'Identifier' })
nvim_set_hl('CmpItemKindEvent', { link = 'Function' })
nvim_set_hl('CmpItemKindOperator', { link = 'Operator' })
nvim_set_hl('CmpItemKindTypeParameter', { link = 'Type' })
end
if config.plugins['indent-blankline.nvim'] then
nvim_set_hl('IblIndent', { fg = colors.base01, nocombine = true })
nvim_set_hl('IblScope', { fg = colors.base0, nocombine = true })
end
if config.plugins['neo-tree.nvim'] then
nvim_set_hl(
'NeoTreeNormal',
{ fg = colors.base1, bg = colors.base04 },
{ transparent = config.transparent }
)
nvim_set_hl('NeoTreeNormalNC', { link = 'NeoTreeNormal' })
nvim_set_hl('NeoTreeDotFile', { fg = colors.base01 })
nvim_set_hl('NeoTreeGitIgnored', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeFileStats', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeDimText', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeFileNameOpened', { link = 'Directory' })
nvim_set_hl('NeoTreeFloatBorder', { link = 'WinSeparator' })
nvim_set_hl('NeoTreeFloatTitle', { link = 'Title' })
nvim_set_hl('NeoTreeGitAdded', { fg = colors.git_add })
nvim_set_hl('NeoTreeGitConflict', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitDeleted', { fg = colors.git_delete })
nvim_set_hl('NeoTreeGitModified', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitUnstaged', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitUntracked', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitStaged', { fg = colors.git_add })
end
if config.plugins['nvim-tree.lua'] then
nvim_set_hl('NvimTreeSymlink', { link = 'Underlined' })
nvim_set_hl('NvimTreeSymlinkIcon', { link = 'Directory' })
nvim_set_hl('NvimTreeFolderName', { fg = colors.base0 })
nvim_set_hl('NvimTreeRootFolder', { link = 'Title' })
nvim_set_hl('NvimTreeFolderIcon', { link = 'Directory' })
nvim_set_hl('NvimTreeEmptyFolderName', { fg = colors.base0 })
nvim_set_hl('NvimTreeExecFile', { link = 'Function' })
nvim_set_hl('NvimTreeOpenedFile', { fg = colors.blue, bold = true })
nvim_set_hl('NvimTreeModifiedFile', { fg = colors.git_modify })
nvim_set_hl('NvimTreeSpecialFile', { link = 'Special' })
nvim_set_hl('NvimTreeIndentMarker', { fg = colors.shade_violet })
nvim_set_hl('NvimTreeGitDirty', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitStaged', { fg = colors.git_add })
nvim_set_hl('NvimTreeGitMerge', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitRenamed', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitNew', { fg = colors.git_add })
nvim_set_hl('NvimTreeGitDeleted', { fg = colors.git_delete })
nvim_set_hl(
'NvimTreeNormal',
{ fg = colors.base1, bg = colors.base04 },
{ transparent = config.transparent }
)
nvim_set_hl('NvimTreeNormalFloat', { link = 'NvimTreeNormal' })
nvim_set_hl('NvimTreeEndOfBuffer', { fg = colors.base04 })
nvim_set_hl('NvimTreeWinSeparator', { link = 'WinSeparator' })
end
if config.plugins['which-key.nvim'] then
nvim_set_hl('WhichKeyNormal', { link = 'NormalFloat' })
nvim_set_hl('WhichKey', { link = 'Function' })
nvim_set_hl('WhichKeyDesc', { fg = colors.base1 })
nvim_set_hl('WhichKeySeparator', { link = 'Keyword' })
nvim_set_hl('WhichKeyGroup', { link = 'Type' })
end
if config.plugins['dashboard-nvim'] then
nvim_set_hl('DashboardHeader', { fg = colors.base01 })
nvim_set_hl('DashboardFooter', { fg = colors.violet })
nvim_set_hl('DashboardDesc', { link = 'Directory' })
nvim_set_hl('DashboardKey', { link = 'Keyword' })
nvim_set_hl('DashboardIcon', { link = 'Directory' })
nvim_set_hl('DashboardShotCut', { fg = colors.base0 })
end
if config.plugins['gitsigns.nvim'] then
nvim_set_hl('GitSignsAdd', { fg = colors.git_add })
nvim_set_hl('GitSignsChange', { fg = colors.git_modify })
nvim_set_hl('GitSignsDelete', { fg = colors.git_delete })
end
if config.plugins['telescope.nvim'] then
nvim_set_hl('TelescopeSelection', { fg = colors.base0 })
nvim_set_hl('TelescopeSelectionCaret', { fg = colors.blue })
nvim_set_hl('TelescopeMultiIcon', { fg = colors.blue })
nvim_set_hl(
'TelescopeNormal',
{ fg = colors.base0, bg = colors.base04 },
{ transparent = config.transparent }
)
nvim_set_hl('TelescopePreviewNormal', { link = 'TelescopeNormal' })
nvim_set_hl('TelescopePromptNormal', { link = 'TelescopeNormal' })
nvim_set_hl('TelescopeResultsNormal', { link = 'TelescopeNormal' })
nvim_set_hl(
'TelescopeBorder',
{ fg = colors.cyan, bg = colors.base04 },
{ transparent = config.transparent }
)
nvim_set_hl('TelescopePromptBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopeResultsBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopePreviewBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopeTitle', { link = 'Title' })
nvim_set_hl('TelescopePromptTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopeResultsTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopePreviewTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopeMatching', { link = 'IncSearch' })
nvim_set_hl('TelescopePreviewMatch', { link = 'TelescopeMatching' })
nvim_set_hl('TelescopePromptCounter', { link = 'NonText' })
nvim_set_hl('TelescopePromptPrefix', { fg = colors.orange })
end
if config.plugins['noice.nvim'] then
nvim_set_hl('NoiceFormatProgressTodo', { fg = colors.diag_ok, bg = colors.mix_green })
nvim_set_hl('NoiceFormatProgressDone', { fg = colors.diag_ok, reverse = true })
nvim_set_hl('NoiceLspProgressSpinner', { fg = colors.diag_ok })
nvim_set_hl('NoiceLspProgressClient', { fg = colors.diag_ok })
nvim_set_hl('NoiceLspProgressTitle', { link = 'Title' })
end
if config.plugins['hop.nvim'] then
nvim_set_hl('HopNextKey', { fg = colors.magenta })
nvim_set_hl('HopNextKey1', { fg = colors.blue })
nvim_set_hl('HopUnmatched', { fg = colors.base01 })
end
if config.plugins['mini.statusline'] then
nvim_set_hl('MiniStatuslineModeNormal', { fg = colors.base03, bg = colors.blue })
nvim_set_hl('MiniStatuslineModeInsert', { fg = colors.base03, bg = colors.green })
nvim_set_hl('MiniStatuslineModeVisual', { fg = colors.base03, bg = colors.magenta })
nvim_set_hl('MiniStatuslineModeReplace', { fg = colors.base03, bg = colors.red })
nvim_set_hl('MiniStatuslineModeCommand', { fg = colors.base03, bg = colors.orange })
nvim_set_hl('MinistatusLineFileName', { fg = colors.base0, bg = colors.base04 })
nvim_set_hl('MiniStatuslineDevinfo', { fg = colors.base0, bg = colors.base02 })
nvim_set_hl('MiniStatuslineFileinfo', { fg = colors.base0, bg = colors.base02 })
nvim_set_hl('MiniStatuslineInactive', { fg = colors.base01, bg = colors.base03 })
end
if config.plugins['mini.tabline'] then
nvim_set_hl('MiniTablineCurrent', { fg = colors.base0, bg = colors.base03 })
nvim_set_hl('MiniTablineVisible', { fg = colors.base0, bg = colors.base03 })
nvim_set_hl('MiniTablineHidden', { fg = colors.base01, bg = colors.base03 })
nvim_set_hl('MiniTablineModifiedCurrent', { link = 'MiniTabLineCurrent' })
nvim_set_hl('MiniTablineModifiedVisible', { link = 'MiniTablineVisible' })
nvim_set_hl('MiniTablineModifiedHidden', { link = 'MiniTablineHidden' })
nvim_set_hl('MiniTablineFill', { fg = colors.base0, bg = colors.base04 })
nvim_set_hl('MiniTablineTabpagesection', { fg = colors.base0, bg = colors.base04 })
end
if config.plugins['mini.starter'] then
nvim_set_hl('MiniStarterCurrent', { link = 'CursorLine' })
nvim_set_hl('MiniStarterHeader', { fg = colors.base01 })
nvim_set_hl('MiniStarterFooter', { fg = colors.violet })
nvim_set_hl('MiniStarterItem', { fg = colors.base0 })
nvim_set_hl('MiniStarterItemBullet', { fg = colors.blue })
nvim_set_hl('MiniStarterItemPrefix', { fg = colors.blue })
nvim_set_hl('MiniStarterSection', { link = 'Title' })
nvim_set_hl('MiniStarterQuery', { fg = colors.blue, bold = true })
end
if config.plugins['mini.cursorword'] then
nvim_set_hl('MiniCursorword', { bg = colors.base02 })
end
if config.plugins['nvim-notify'] then
nvim_set_hl('NotifyBackground', { bg = colors.base03 })
nvim_set_hl('NotifyERRORBorder', { link = 'NotifyERRORBody' })
nvim_set_hl('NotifyWARNBorder', { link = 'NotifyWARNBody' })
nvim_set_hl('NotifyINFOBorder', { link = 'NotifyINFOBody' })
nvim_set_hl('NotifyDEBUGBorder', { link = 'NotifyDEBUGBody' })
nvim_set_hl('NotifyTRACEBorder', { link = 'NotifyTRACEBody' })
nvim_set_hl('NotifyERRORIcon', { fg = colors.diag_error })
nvim_set_hl('NotifyWARNIcon', { fg = colors.diag_warning })
nvim_set_hl('NotifyINFOIcon', { fg = colors.diag_info })
nvim_set_hl('NotifyDEBUGIcon', { fg = colors.magenta })
nvim_set_hl('NotifyTRACEIcon', { fg = colors.blue })
nvim_set_hl('NotifyERRORTitle', { fg = colors.diag_error })
nvim_set_hl('NotifyWARNTitle', { fg = colors.diag_warning })
nvim_set_hl('NotifyINFOTitle', { fg = colors.diag_info })
nvim_set_hl('NotifyDEBUGTitle', { fg = colors.magenta })
nvim_set_hl('NotifyTRACETitle', { fg = colors.blue })
nvim_set_hl('NotifyERRORBody', { fg = colors.diag_error, bg = colors.mix_red })
nvim_set_hl('NotifyWARNBody', { fg = colors.diag_warning, bg = colors.mix_yellow })
nvim_set_hl('NotifyINFOBody', { fg = colors.diag_info, bg = colors.mix_violet })
nvim_set_hl('NotifyDEBUGBody', { fg = colors.magenta, bg = colors.mix_magenta })
nvim_set_hl('NotifyTRACEBody', { fg = colors.blue, bg = colors.mix_blue })
end
if config.plugins['rainbow-delimiters'] then
nvim_set_hl('RainbowDelimiterRed', { fg = colors.red })
nvim_set_hl('RainbowDelimiteYellow', { fg = colors.yellow })
nvim_set_hl('RainbowDelimiterBlue', { fg = colors.blue })
nvim_set_hl('RainbowDelimiterOrange', { fg = colors.orange })
nvim_set_hl('RainbowDelimiterGreen', { fg = colors.green })
nvim_set_hl('RainbowDelimiterViolet', { fg = colors.violet })
nvim_set_hl('RainbowDelimiterCyan', { fg = colors.cyan })
end
if config.on_highlights then
local color = require 'solarized.color'
local highlights = config.on_highlights(colors, color)
for group_name, group_val in pairs(highlights) do
local hl = nvim_get_hl { name = group_name, link = true }
local val = vim.tbl_extend('force', hl, group_val)
vim.api.nvim_set_hl(0, group_name, val)
end
end
end
return M

View file

@ -0,0 +1,561 @@
local M = {}
local function nvim_get_hl(opts)
local hl = vim.api.nvim_get_hl(0, opts)
if hl.link then
return nvim_get_hl { name = hl.link }
end
return hl
end
---@param group_name string
---@param group_val vim.api.keyset.highlight
---@param config? solarized.nvim_set_hl.config
local nvim_set_hl = function(group_name, group_val, config)
local val = { fg = 'NONE', bg = 'NONE' }
if not group_val.link then
if config and config.transparent then
group_val.bg = 'NONE'
end
if config and config.styles then
group_val = vim.tbl_extend('force', group_val, config.styles)
end
val = vim.tbl_extend('force', val, group_val)
vim.api.nvim_set_hl(0, group_name, val)
else
vim.api.nvim_set_hl(0, group_name, group_val)
end
end
---@param colors solarized.palette
---@param config solarized.config
M.set_highlight = function(colors, config)
if config.on_colors then
local color = require 'solarized.color'
colors = vim.tbl_extend('force', colors, config.on_colors(colors, color))
end
-- EDITOR :h highlight-groups
nvim_set_hl('ColorColumn', { bg = colors.base2 })
nvim_set_hl('Conceal', { fg = colors.blue })
nvim_set_hl('CurSearch', { link = 'IncSearch' })
nvim_set_hl('Cursor', { fg = colors.base3, bg = colors.base00 })
nvim_set_hl('lCursor', { link = 'Cursor' })
nvim_set_hl('CursorIM', { link = 'Cursor' })
nvim_set_hl('CursorColumn', { link = 'ColorColumn' })
nvim_set_hl('CursorLine', { bg = colors.base2 })
nvim_set_hl('Directory', { fg = colors.blue })
nvim_set_hl('DiffAdd', { fg = colors.git_add })
nvim_set_hl('DiffChange', { fg = colors.git_modify })
nvim_set_hl('DiffDelete', { fg = colors.git_delete, reverse = true })
nvim_set_hl('DiffText', { fg = colors.cyan, reverse = true })
nvim_set_hl('EndOfBuffer', { fg = colors.base3 })
nvim_set_hl('TermCursor', { link = 'Cursor' })
nvim_set_hl('TermCursorNC', { fg = colors.base3, bg = colors.base00 })
nvim_set_hl('ErrorMsg', { fg = colors.diag_error })
nvim_set_hl(
'WinSeparator',
{ fg = colors.cyan, bg = colors.base2 },
{ transparent = config.transparent }
)
nvim_set_hl('Folded', { fg = colors.base00, bg = colors.base2 })
nvim_set_hl('FoldColumn', { fg = colors.base00, bg = colors.base2 })
nvim_set_hl('SignColumn', { link = 'Normal' })
nvim_set_hl(
'IncSearch',
{ fg = colors.green, bg = colors.mix_green, bold = true },
{ transparent = config.transparent }
)
nvim_set_hl('Substitute', { link = 'IncSearch' })
nvim_set_hl(
'LineNr',
{ fg = colors.base01, bg = colors.base2 },
{ transparent = config.transparent }
)
nvim_set_hl('LineNrAbove', { link = 'LineNr' })
nvim_set_hl('LineNrBelow', { link = 'LineNr' })
nvim_set_hl(
'CursorLineNr',
{ fg = colors.base01, bg = colors.base2 },
{ transparent = config.transparent }
)
nvim_set_hl('CursorLineFold', { link = 'FoldColumn' })
nvim_set_hl('CursorLineSign', { link = 'SignColumn' })
nvim_set_hl('MatchParen', { fg = colors.cyan })
nvim_set_hl('ModeMsg', { fg = colors.blue })
nvim_set_hl('MsgArea', { link = 'Normal' })
nvim_set_hl('MsgSeparator', { link = 'Normal' })
nvim_set_hl('MoreMsg', { link = 'ModeMsg' })
nvim_set_hl('NonText', { fg = colors.base01 })
nvim_set_hl(
'Normal',
{ fg = colors.base00, bg = colors.base3 },
{ transparent = config.transparent }
)
nvim_set_hl(
'NormalFloat',
{ fg = colors.base00, bg = colors.base2 },
{ transparent = config.transparent }
)
nvim_set_hl('FloatBorder', { link = 'WinSeparator' })
nvim_set_hl('FloatTitle', { fg = colors.blue })
nvim_set_hl('NormalNC', { link = 'Normal' })
nvim_set_hl(
'Pmenu',
{ fg = colors.base00, bg = colors.base2 },
{ transparent = config.transparent }
)
nvim_set_hl('PmenuSel', { fg = colors.blue, reverse = true })
nvim_set_hl('PmenuKind', { link = 'Pmenu' })
nvim_set_hl('PmenuKindSel', { link = 'PmenuSel' })
nvim_set_hl('PmenuExtra', { link = 'Pmenu' })
nvim_set_hl('PmenuExtraSel', { link = 'PmenuSel' })
nvim_set_hl('PmenuSbar', { bg = colors.base2 })
nvim_set_hl('PmenuThumb', { bg = colors.blue })
nvim_set_hl('Question', { fg = colors.diag_info })
nvim_set_hl('QuickFixLine', { fg = colors.base00, bg = colors.base3 })
nvim_set_hl('Search', { fg = colors.magenta, bg = colors.mix_magenta })
nvim_set_hl('SpecialKey', { link = 'NonText' })
nvim_set_hl('SpellBad', { underline = true, strikethrough = true })
nvim_set_hl('SpellCap', { fg = colors.diag_hint })
nvim_set_hl('SpellLocal', { link = 'SpellCap' })
nvim_set_hl('SpellRare', { fg = colors.diag_warning })
nvim_set_hl('StatusLine', { fg = colors.base01, bg = colors.base2 })
nvim_set_hl('StatusLineNC', { fg = colors.base01, bg = colors.base2 })
nvim_set_hl('TabLine', { fg = colors.base01, bg = colors.base2 })
nvim_set_hl('TabLineFill', { fg = colors.base0, bg = colors.base2 })
nvim_set_hl('TabLineSel', { fg = colors.base0, bg = colors.base3 })
nvim_set_hl('Title', { fg = colors.blue })
nvim_set_hl('Visual', { bg = colors.mix_cyan })
nvim_set_hl('VisualNOS', { link = 'Visual' })
nvim_set_hl('warningMsg', { fg = colors.diag_warning })
nvim_set_hl('Whitespace', { fg = colors.base01 })
nvim_set_hl('WildMenu', { fg = colors.base2 })
nvim_set_hl('WinBar', { link = 'Pmenu' })
nvim_set_hl('WinBarNC', { link = 'WinBar' }) -- SYNTAX :h group-name
nvim_set_hl('Comment', { fg = colors.base1 })
nvim_set_hl('Constant', { fg = colors.magenta })
nvim_set_hl('String', { fg = colors.cyan })
nvim_set_hl('Character', { link = 'String' })
nvim_set_hl('Number', { link = 'Constant' })
nvim_set_hl('Boolean', { link = 'Constant' })
nvim_set_hl('Float', { link = 'Constant' })
nvim_set_hl('Identifier', { fg = colors.blue })
nvim_set_hl('Function', { link = 'Identifier' })
nvim_set_hl('Statement', { fg = colors.green })
nvim_set_hl('Conditional', { link = 'Statement' })
nvim_set_hl('Repeat', { link = 'Statement' })
nvim_set_hl('Label', { link = 'Statement' })
nvim_set_hl('Operator', { link = 'Statement' })
nvim_set_hl('Keyword', { fg = colors.green })
nvim_set_hl('Exception', { link = 'Statement' })
nvim_set_hl('PreProc', { link = 'Statement' })
nvim_set_hl('Include', { link = 'Statement' })
nvim_set_hl('Define', { link = 'Statement' })
nvim_set_hl('Macro', { link = 'Statement' })
nvim_set_hl('PreCondit', { link = 'Statement' })
nvim_set_hl('Type', { fg = colors.orange })
nvim_set_hl('StorageClass', { link = 'Statement' })
nvim_set_hl('Structure', { link = 'Type' })
nvim_set_hl('Typedef', { link = 'Statement' })
nvim_set_hl('Special', { fg = colors.magenta })
nvim_set_hl('SpecialChar', { fg = colors.magenta })
nvim_set_hl('Tag', { fg = colors.blue })
nvim_set_hl('Delimiter', { fg = colors.base01 })
nvim_set_hl('SpecialComment', { link = 'Statement' })
nvim_set_hl('Debug', { fg = colors.magenta })
nvim_set_hl('Underlined', { fg = colors.violet, underline = true })
nvim_set_hl('Ignore', {})
nvim_set_hl('Error', { fg = colors.diag_error, bold = true })
nvim_set_hl('Todo', { fg = colors.blue })
nvim_set_hl('Added', { fg = colors.git_add })
nvim_set_hl('Changed', { fg = colors.git_modify })
nvim_set_hl('Removed', { fg = colors.git_delete }) -- PLUGINS
if config.plugins['nvim-treesitter'] then
nvim_set_hl('@variable', { link = 'Identifier' })
nvim_set_hl('@variable.builtin', { link = 'Constant' })
nvim_set_hl('@variable.parameter', { fg = colors.blue, italic = true })
nvim_set_hl('@variable.member', { link = 'Identifier' })
nvim_set_hl('@constant', { link = 'Constant' })
nvim_set_hl('@constant.builtin', { link = 'Constant' })
nvim_set_hl('@constant.macro', { link = 'Constant' })
nvim_set_hl('@module', { link = 'Identifier' })
nvim_set_hl('@module.builtin', { link = 'Constant' })
nvim_set_hl('@label', { link = 'Statement' })
nvim_set_hl('@string', { link = 'String' })
nvim_set_hl('@string.documentation', { link = 'Statement' })
nvim_set_hl('@string.regexp', { fg = colors.magenta })
nvim_set_hl('@string.escape', { link = 'Statement' })
nvim_set_hl('@string.special', { link = 'Special' })
nvim_set_hl('@string.special.symbol', { link = 'Identifier' })
nvim_set_hl('@string.special.url', { link = 'Underlined' })
nvim_set_hl('@character', { link = 'Constant' })
nvim_set_hl('@character.special', { link = 'Constant' })
nvim_set_hl('@character.printf', { link = 'Keyword' })
nvim_set_hl('@type', { link = 'Type' })
nvim_set_hl('@type.builtin', { link = 'Keyword' })
nvim_set_hl('@type.definition', { link = 'Type' })
nvim_set_hl('@type.qualifier', { link = 'Type' })
nvim_set_hl('@property.json', { fg = colors.green })
nvim_set_hl('@function', { link = 'Function' })
nvim_set_hl('@function.builtin', { fg = colors.yellow })
nvim_set_hl('@function.call', { link = 'Function' })
nvim_set_hl('@function.macro', { link = 'Function' })
nvim_set_hl('@function.method', { link = 'Function' })
nvim_set_hl('@function.method.call', { link = 'Function' })
nvim_set_hl('@constructor', { link = 'Type' })
nvim_set_hl('@constructor.lua', { link = 'Delimiter' })
nvim_set_hl('@operator', { link = 'Statement' })
nvim_set_hl('@keyword', { link = 'Keyword' })
nvim_set_hl('@keyword.coroutine', { link = 'Statement' })
nvim_set_hl('@keyword.function', { link = 'Keyword' })
nvim_set_hl('@keyword.operator', { link = 'Statement' })
nvim_set_hl('@keyword.import', { link = 'Keyword' })
nvim_set_hl('@keyword.repeat', { link = 'Statement' })
nvim_set_hl('@keyword.return', { link = 'Statement' })
nvim_set_hl('@keyword.debug', { link = 'Statement' })
nvim_set_hl('@keyword.exception', { link = 'Statement' })
nvim_set_hl('@keyword.conditional', { link = 'Statement' })
nvim_set_hl('@keyword.conditional.ternary', { link = 'Statement' })
nvim_set_hl('@keyword.directive', { link = 'Statement' })
nvim_set_hl('@keyword.directive.define', { link = 'Statement' })
nvim_set_hl('@punctuation.delimiter', { link = 'Delimiter' })
nvim_set_hl('@punctuation.bracket', { link = 'Delimiter' })
nvim_set_hl('@punctuation.special', { link = 'Keyword' })
nvim_set_hl('@comment', { link = 'Comment' })
nvim_set_hl('@comment.documentation', { link = 'Comment' })
nvim_set_hl('@comment.error', { fg = colors.diag_error })
nvim_set_hl('@comment.warning', { fg = colors.diag_warning })
nvim_set_hl('@comment.todo', { link = 'Todo' })
nvim_set_hl('@comment.note', { fg = colors.diag_hint })
nvim_set_hl('@markup.strong', { fg = colors.magenta })
nvim_set_hl('@markup.italic', { link = 'Underlined' })
nvim_set_hl('@markup.strikethrough', { fg = colors.base1 })
nvim_set_hl('@markup.underline', { link = 'Underlined' })
nvim_set_hl('@markup.heading', { fg = colors.blue })
nvim_set_hl('@markup.quote', { fg = colors.base1 })
nvim_set_hl('@markup.math', { fg = colors.magenta })
nvim_set_hl('@markup.environment', { link = 'Comment' })
nvim_set_hl('@markup.link', { link = 'Underlined' })
nvim_set_hl('@markup.link.label', { link = 'Constant' })
nvim_set_hl('@markup.link.url', { link = 'Underlined' })
nvim_set_hl('@markup.raw', { link = 'Constant' })
nvim_set_hl('@markup.raw.block', { fg = colors.base0 })
nvim_set_hl('@markup.list', { fg = colors.base0 })
nvim_set_hl('@markup.list.checked', { fg = colors.git_add })
nvim_set_hl('@markup.list.unchecked', { fg = colors.git_modify })
nvim_set_hl('@diff.plus', { fg = colors.git_add })
nvim_set_hl('@diff.minus', { fg = colors.git_delete })
nvim_set_hl('@diff.delta', { fg = colors.git_modify })
nvim_set_hl('@tag', { fg = colors.red })
nvim_set_hl('@tag.attribute', { fg = colors.blue })
nvim_set_hl('@tag.delimiter', { fg = colors.red })
end
if config.plugins['nvim-lspconfig'] then
nvim_set_hl('@lsp.type.class', { link = 'Type' })
nvim_set_hl('@lsp.type.decorator', { link = 'Function' })
nvim_set_hl('@lsp.type.enum', { link = 'Type' })
nvim_set_hl('@lsp.type.enumMember', { link = 'Type' })
nvim_set_hl('@lsp.type.interface', { link = 'Type' })
nvim_set_hl('@lsp.type.macro', { link = 'Keyword' })
nvim_set_hl('@lsp.type.namespace', { link = 'Type' })
nvim_set_hl('@lsp.type.parameter', { link = '@parameter' })
nvim_set_hl('@lsp.type.property', { link = 'Identifier' })
nvim_set_hl('@lsp.type.struct', { link = 'Type' })
nvim_set_hl('@lsp.type.type', { link = 'Type' })
nvim_set_hl('@lsp.type.typeParameter', { link = 'Type' })
nvim_set_hl('@lsp.type.variable', { link = 'Identifier' })
nvim_set_hl('@lsp.typemod.variable.defaultLibrary', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.variable.readonly', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.variable.global', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.keyword.documentation', { link = 'Statement' })
nvim_set_hl('@lsp.typemod.class.documentation', { link = 'Type' })
nvim_set_hl('@lsp.typemod.property.readonly', { link = 'Constant' })
nvim_set_hl('DiagnosticError', { fg = colors.diag_error })
nvim_set_hl('DiagnosticWarn', { fg = colors.diag_warning })
nvim_set_hl('DiagnosticInfo', { fg = colors.diag_info })
nvim_set_hl('DiagnosticHint', { fg = colors.diag_hint })
nvim_set_hl('DiagnosticOk', { fg = colors.diag_ok })
nvim_set_hl('DiagnosticVirtualTextError', { fg = colors.diag_error, bg = colors.mix_red })
nvim_set_hl('DiagnosticVirtualTextWarn', { fg = colors.diag_warning, bg = colors.mix_yellow })
nvim_set_hl('DiagnosticVirtualTextInfo', { fg = colors.diag_blue, bg = colors.mix_blue })
nvim_set_hl('DiagnosticVirtualTextHint', { fg = colors.diag_blue, bg = colors.mix_blue })
nvim_set_hl('DiagnosticVirtualTextOk', { fg = colors.diag_ok, bg = colors.mix_green })
nvim_set_hl('DiagnosticUnderlineError', { fg = colors.diag_error, underline = true })
nvim_set_hl('DiagnosticUnderlineWarn', { fg = colors.diag_warning, underline = true })
nvim_set_hl('DiagnosticUnderlineInfo', { fg = colors.diag_info, underline = true })
nvim_set_hl('DiagnosticUnderlineHint', { fg = colors.diag_hint, underline = true })
nvim_set_hl('DiagnosticUnderlineOk', { fg = colors.diag_ok, underline = true })
nvim_set_hl('LspReferenceText', { link = 'Visual' })
nvim_set_hl('LspReferenceRead', { link = 'Visual' })
nvim_set_hl('LspReferenceWrite', { link = 'Visual' })
nvim_set_hl('LspInlayHint', { fg = colors.base1 })
end
if config.plugins['nvim-navic'] then
nvim_set_hl('NavicText', { fg = colors.base0 })
nvim_set_hl('NavicSeparator', { link = 'Keyword' })
nvim_set_hl('NavicIconsMethod', { link = 'Function' })
nvim_set_hl('NavicIconsFunction', { link = 'Function' })
nvim_set_hl('NavicIconsField', { link = 'Identifier' })
nvim_set_hl('NavicIconsVariable', { link = 'Identifier' })
nvim_set_hl('NavicIconsClass', { link = 'Type' })
nvim_set_hl('NavicIconsInterface', { link = 'Type' })
nvim_set_hl('NavicIconsModule', { link = 'Type' })
nvim_set_hl('NavicIconsNamespace', { link = 'Type' })
nvim_set_hl('NavicIconsProperty', { link = 'Identifier' })
nvim_set_hl('NavicIconsUnit', { link = 'Number' })
nvim_set_hl('NavicIconsEnum', { link = 'Type' })
nvim_set_hl('NavicIconsKeyword', { link = 'Keyword' })
nvim_set_hl('NavicIconsSnippet', { link = 'Tag' })
nvim_set_hl('NavicIconsColor', { fg = colors.orange })
nvim_set_hl('NavicIconsFile', { link = 'Identifier' })
nvim_set_hl('NavicIconsReference', { link = 'Underlined' })
nvim_set_hl('NavicIconsFolder', { link = 'Directory' })
nvim_set_hl('NavicIconsEnumMember', { link = 'Constant' })
nvim_set_hl('NavicIconsConstant', { link = 'Constant' })
nvim_set_hl('NavicIconsStruct', { link = 'Identifier' })
nvim_set_hl('NavicIconsEvent', { link = 'Function' })
nvim_set_hl('NavicIconsOperator', { link = 'Operator' })
nvim_set_hl('NavicIconsTypeParameter', { link = 'Type' })
end
if config.plugins['nvim-cmp'] then
nvim_set_hl('CmpItemKindText', { link = 'String' })
nvim_set_hl('CmpItemKindMethod', { link = 'Function' })
nvim_set_hl('CmpItemKindFunction', { link = 'Function' })
nvim_set_hl('CmpItemKindField', { link = 'Identifier' })
nvim_set_hl('CmpItemKindVariable', { link = 'Identifier' })
nvim_set_hl('CmpItemKindClass', { link = 'Type' })
nvim_set_hl('CmpItemKindInterface', { link = 'Type' })
nvim_set_hl('CmpItemKindModule', { link = 'Type' })
nvim_set_hl('CmpItemKindProperty', { link = 'Identifier' })
nvim_set_hl('CmpItemKindUnit', { link = 'Number' })
nvim_set_hl('CmpItemKindEnum', { link = 'Type' })
nvim_set_hl('CmpItemKindKeyword', { link = 'Keyword' })
nvim_set_hl('CmpItemKindSnippet', { link = 'Tag' })
nvim_set_hl('CmpItemKindColor', { fg = colors.orange })
nvim_set_hl('CmpItemKindFile', { link = 'Identifier' })
nvim_set_hl('CmpItemKindReference', { link = 'Underlined' })
nvim_set_hl('CmpItemKindFolder', { link = 'Directory' })
nvim_set_hl('CmpItemKindEnumMember', { link = 'Constant' })
nvim_set_hl('CmpItemKindConstant', { link = 'Constant' })
nvim_set_hl('CmpItemKindStruct', { link = 'Identifier' })
nvim_set_hl('CmpItemKindEvent', { link = 'Function' })
nvim_set_hl('CmpItemKindOperator', { link = 'Operator' })
nvim_set_hl('CmpItemKindTypeParameter', { link = 'Type' })
end
if config.plugins['indent-blankline.nvim'] then
nvim_set_hl('IblIndent', { fg = colors.base01, nocombine = true })
nvim_set_hl('IblScope', { fg = colors.base0, nocombine = true })
end
if config.plugins['neo-tree.nvim'] then
nvim_set_hl(
'NeoTreeNormal',
{ fg = colors.base01, bg = colors.base2 },
{ transparent = config.transparent }
)
nvim_set_hl('NeoTreeNormalNC', { link = 'NeoTreeNormal' })
nvim_set_hl('NeoTreeDotFile', { fg = colors.base1 })
nvim_set_hl('NeoTreeGitIgnored', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeFileStats', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeDimText', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeFileNameOpened', { link = 'Directory' })
nvim_set_hl('NeoTreeFloatBorder', { link = 'WinSeparator' })
nvim_set_hl('NeoTreeFloatTitle', { link = 'Title' })
nvim_set_hl('NeoTreeGitAdded', { fg = colors.git_add })
nvim_set_hl('NeoTreeGitConflict', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitDeleted', { fg = colors.git_delete })
nvim_set_hl('NeoTreeGitModified', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitUnstaged', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitUntracked', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitStaged', { fg = colors.git_add })
end
if config.plugins['nvim-tree.lua'] then
nvim_set_hl('NvimTreeSymlink', { link = 'Underlined' })
nvim_set_hl('NvimTreeSymlinkIcon', { link = 'Directory' })
nvim_set_hl('NvimTreeFolderName', { fg = colors.base0 })
nvim_set_hl('NvimTreeRootFolder', { link = 'Title' })
nvim_set_hl('NvimTreeFolderIcon', { link = 'Directory' })
nvim_set_hl('NvimTreeEmptyFolderName', { fg = colors.base0 })
nvim_set_hl('NvimTreeExecFile', { link = 'Function' })
nvim_set_hl('NvimTreeOpenedFile', { fg = colors.blue, bold = true })
nvim_set_hl('NvimTreeModifiedFile', { fg = colors.git_modify })
nvim_set_hl('NvimTreeSpecialFile', { link = 'Special' })
nvim_set_hl('NvimTreeIndentMarker', { fg = colors.shade_violet })
nvim_set_hl('NvimTreeGitDirty', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitStaged', { fg = colors.git_add })
nvim_set_hl('NvimTreeGitMerge', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitRenamed', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitNew', { fg = colors.git_add })
nvim_set_hl('NvimTreeGitDeleted', { fg = colors.git_delete })
nvim_set_hl(
'NvimTreeNormal',
{ fg = colors.base01, bg = colors.base2 },
{ transparent = config.transparent }
)
nvim_set_hl('NvimTreeNormalFloat', { link = 'NvimTreeNormal' })
nvim_set_hl('NvimTreeEndOfBuffer', { fg = colors.base2 })
nvim_set_hl('NvimTreeWinSeparator', { link = 'WinSeparator' })
end
if config.plugins['which-key.nvim'] then
nvim_set_hl('WhichKeyNormal', { link = 'NormalFloat' })
nvim_set_hl('WhichKey', { link = 'Function' })
nvim_set_hl('WhichKeyDesc', { fg = colors.base01 })
nvim_set_hl('WhichKeySeparator', { link = 'Keyword' })
nvim_set_hl('WhichKeyGroup', { link = 'Type' })
end
if config.plugins['dashboard-nvim'] then
nvim_set_hl('DashboardHeader', { fg = colors.base01 })
nvim_set_hl('DashboardFooter', { fg = colors.magenta })
nvim_set_hl('DashboardDesc', { link = 'Directory' })
nvim_set_hl('DashboardKey', { link = 'Keyword' })
nvim_set_hl('DashboardIcon', { link = 'Directory' })
nvim_set_hl('DashboardShotCut', { fg = colors.base0 })
end
if config.plugins['gitsigns.nvim'] then
nvim_set_hl('GitSignsAdd', { fg = colors.git_add })
nvim_set_hl('GitSignsChange', { fg = colors.git_modify })
nvim_set_hl('GitSignsDelete', { fg = colors.git_delete })
end
if config.plugins['telescope.nvim'] then
nvim_set_hl('TelescopeSelection', { fg = colors.base0 })
nvim_set_hl('TelescopeSelectionCaret', { fg = colors.blue })
nvim_set_hl('TelescopeMultiIcon', { fg = colors.blue })
nvim_set_hl(
'TelescopeNormal',
{ fg = colors.base0, bg = colors.base2 },
{ transparent = config.transparent }
)
nvim_set_hl('TelescopePreviewNormal', { link = 'TelescopeNormal' })
nvim_set_hl('TelescopePromptNormal', { link = 'TelescopeNormal' })
nvim_set_hl('TelescopeResultsNormal', { link = 'TelescopeNormal' })
nvim_set_hl(
'TelescopeBorder',
{ fg = colors.cyan, bg = colors.base2 },
{ transparent = config.transparent }
)
nvim_set_hl('TelescopePromptBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopeResultsBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopePreviewBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopeTitle', { link = 'Title' })
nvim_set_hl('TelescopePromptTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopeResultsTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopePreviewTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopeMatching', { link = 'IncSearch' })
nvim_set_hl('TelescopePreviewMatch', { link = 'TelescopeMatching' })
nvim_set_hl('TelescopePromptCounter', { link = 'NonText' })
nvim_set_hl('TelescopePromptPrefix', { fg = colors.orange })
end
if config.plugins['noice.nvim'] then
nvim_set_hl('NoiceFormatProgressTodo', { fg = colors.diag_ok, bg = colors.mix_green })
nvim_set_hl('NoiceFormatProgressDone', { fg = colors.diag_ok, reverse = true })
nvim_set_hl('NoiceLspProgressSpinner', { fg = colors.diag_ok })
nvim_set_hl('NoiceLspProgressClient', { fg = colors.diag_ok })
nvim_set_hl('NoiceLspProgressTitle', { link = 'Title' })
end
if config.plugins['hop.nvim'] then
nvim_set_hl('HopNextKey', { fg = colors.magenta })
nvim_set_hl('HopNextKey1', { fg = colors.blue })
nvim_set_hl('HopUnmatched', { fg = colors.base1 })
end
if config.plugins['mini.statusline'] then
nvim_set_hl('MiniStatuslineModeNormal', { fg = colors.base3, bg = colors.blue })
nvim_set_hl('MiniStatuslineModeInsert', { fg = colors.base3, bg = colors.green })
nvim_set_hl('MiniStatuslineModeVisual', { fg = colors.base3, bg = colors.magenta })
nvim_set_hl('MiniStatuslineModeReplace', { fg = colors.base3, bg = colors.red })
nvim_set_hl('MiniStatuslineModeCommand', { fg = colors.base3, bg = colors.orange })
nvim_set_hl('MinistatusLineFileName', { fg = colors.base0, bg = colors.base2 })
nvim_set_hl('MiniStatuslineDevinfo', { fg = colors.base0, bg = colors.base2 })
nvim_set_hl('MiniStatuslineFileinfo', { fg = colors.base0, bg = colors.base2 })
nvim_set_hl('MiniStatuslineInactive', { fg = colors.base1, bg = colors.base3 })
end
if config.plugins['mini.tabline'] then
nvim_set_hl('MiniTablineCurrent', { fg = colors.base0, bg = colors.base3 })
nvim_set_hl('MiniTablineVisible', { fg = colors.base0, bg = colors.base3 })
nvim_set_hl('MiniTablineHidden', { fg = colors.base1, bg = colors.base3 })
nvim_set_hl('MiniTablineModifiedCurrent', { link = 'MiniTabLineCurrent' })
nvim_set_hl('MiniTablineModifiedVisible', { link = 'MiniTablineVisible' })
nvim_set_hl('MiniTablineModifiedHidden', { link = 'MiniTablineHidden' })
nvim_set_hl('MiniTablineFill', { fg = colors.base0, bg = colors.base2 })
nvim_set_hl('MiniTablineTabpagesection', { fg = colors.base0, bg = colors.base2 })
end
if config.plugins['mini.starter'] then
nvim_set_hl('MiniStarterCurrent', { link = 'CursorLine' })
nvim_set_hl('MiniStarterHeader', { fg = colors.base01 })
nvim_set_hl('MiniStarterFooter', { fg = colors.violet })
nvim_set_hl('MiniStarterItem', { fg = colors.base0 })
nvim_set_hl('MiniStarterItemBullet', { fg = colors.blue })
nvim_set_hl('MiniStarterItemPrefix', { fg = colors.blue })
nvim_set_hl('MiniStarterSection', { link = 'Title' })
nvim_set_hl('MiniStarterQuery', { fg = colors.blue, bold = true })
end
if config.plugins['mini.cursorword'] then
nvim_set_hl('MiniCursorword', { bg = colors.base2 })
end
if config.plugins['nvim-notify'] then
nvim_set_hl('NotifyBackground', { bg = colors.base3 })
nvim_set_hl('NotifyERRORBorder', { link = 'NotifyERRORBody' })
nvim_set_hl('NotifyWARNBorder', { link = 'NotifyWARNBody' })
nvim_set_hl('NotifyINFOBorder', { link = 'NotifyINFOBody' })
nvim_set_hl('NotifyDEBUGBorder', { link = 'NotifyDEBUGBody' })
nvim_set_hl('NotifyTRACEBorder', { link = 'NotifyTRACEBody' })
nvim_set_hl('NotifyERRORIcon', { fg = colors.diag_error })
nvim_set_hl('NotifyWARNIcon', { fg = colors.diag_warning })
nvim_set_hl('NotifyINFOIcon', { fg = colors.diag_info })
nvim_set_hl('NotifyDEBUGIcon', { fg = colors.magenta })
nvim_set_hl('NotifyTRACEIcon', { fg = colors.blue })
nvim_set_hl('NotifyERRORTitle', { fg = colors.diag_error })
nvim_set_hl('NotifyWARNTitle', { fg = colors.diag_warning })
nvim_set_hl('NotifyINFOTitle', { fg = colors.diag_info })
nvim_set_hl('NotifyDEBUGTitle', { fg = colors.magenta })
nvim_set_hl('NotifyTRACETitle', { fg = colors.blue })
nvim_set_hl('NotifyERRORBody', { fg = colors.diag_error, bg = colors.mix_red })
nvim_set_hl('NotifyWARNBody', { fg = colors.diag_warning, bg = colors.mix_yellow })
nvim_set_hl('NotifyINFOBody', { fg = colors.diag_info, bg = colors.mix_violet })
nvim_set_hl('NotifyDEBUGBody', { fg = colors.magenta, bg = colors.mix_magenta })
nvim_set_hl('NotifyTRACEBody', { fg = colors.blue, bg = colors.mix_blue })
end
if config.plugins['rainbow-delimiters'] then
nvim_set_hl('RainbowDelimiterRed', { fg = colors.red })
nvim_set_hl('RainbowDelimiteYellow', { fg = colors.yellow })
nvim_set_hl('RainbowDelimiterBlue', { fg = colors.blue })
nvim_set_hl('RainbowDelimiterOrange', { fg = colors.orange })
nvim_set_hl('RainbowDelimiterGreen', { fg = colors.green })
nvim_set_hl('RainbowDelimiterViolet', { fg = colors.violet })
nvim_set_hl('RainbowDelimiterCyan', { fg = colors.cyan })
end
if config.on_highlights then
local color = require 'solarized.color'
local highlights = config.on_highlights(colors, color)
for group_name, group_val in pairs(highlights) do
local hl = nvim_get_hl { name = group_name, link = true }
local val = vim.tbl_extend('force', hl, group_val)
vim.api.nvim_set_hl(0, group_name, val)
end
end
end
return M

View file

@ -1,7 +1,38 @@
local config = require('solarized.config')
---@class solarized
---@field config solarized.config
---@field setup fun(config: solarized.config)
---@field load fun()
local M = {}
M.setup = config.setup
M.config = require 'solarized.config'
M.setup = function(config)
M.config = vim.tbl_deep_extend('force', M.config, config)
end
M.load = function()
if vim.g.colors_name then
vim.cmd 'hi clear'
end
if vim.fn.exists 'syntax_on' then
vim.cmd 'syntax reset'
end
vim.g.colors_name = 'solarized'
local highlights = {}
local colors = {}
if vim.o.background == 'dark' then
highlights = require 'solarized.highlights'
local palette = require 'solarized.palette'
colors = palette[M.config.palette]
else
highlights = require 'solarized.highlights.solarized-light'
local palette = require 'solarized.palette.solarized-light'
colors = palette[M.config.palette]
end
highlights.set_highlight(colors, M.config)
end
return M

View file

@ -1,160 +0,0 @@
local M = {}
--- Get the solarized colors based on the current Vim background setting
---
--- @return table colors A table containing the solarized colors
function M.get_colors()
local config = require('solarized.config')
local colors = {
solarized = {
dark = {
base03 = '#002b36', -- background tone dark (main)
base02 = '#073642', -- background tone (highlight/menu/LineNr)
base01 = '#586e75', -- content tone (comment)
base00 = '#657b83', -- content tone (winseparator)
base0 = '#839496', -- content tone (foreground)
base1 = '#93a1a1', -- content tone (statusline/tabline)
base2 = '#eee8d5', -- background tone light (highlight)
base3 = '#fdf6e3', -- background tone lighter (main)
-- accent
yellow = '#b58900',
orange = '#cb4b16',
red = '#dc322f',
magenta = '#d33682',
violet = '#6c71c4',
blue = '#268bd2',
cyan = '#2aa198',
green = '#859900',
-- git
add = '#859900',
change = '#b58900',
delete = '#dc322f',
-- diagnostic
info = '#268bd2',
hint = '#859900',
warning = '#b58900',
error = '#dc322f',
},
light = {
base3 = '#002b36', -- background tone darker (main)
base2 = '#073642', -- background tone dark (highlight)
base1 = '#586e75', -- content tone (statusline/tabline)
base0 = '#657b83', -- content tone (foreground)
base00 = '#839496', -- content tone (winseparator)
base01 = '#93a1a1', -- content tone (comment)
base02 = '#eee8d5', -- background tone (highlight/menu/LineNr)
base03 = '#fdf6e3', -- background tone lighter (main)
-- accent
yellow = '#b58900',
orange = '#cb4b16',
red = '#dc322f',
magenta = '#d33682',
violet = '#6c71c4',
blue = '#268bd2',
cyan = '#2aa198',
green = '#859900',
-- git
add = '#859900',
change = '#b58900',
delete = '#dc322f',
-- diagnostic
info = '#268bd2',
hint = '#859900',
warning = '#b58900',
error = '#dc322f',
},
},
selenized = {
dark = {
base03 = '#103c48', -- background tone dark (main)
base02 = '#184956', -- background tone (highlight/menu/LineNr)
base01 = '#72898f', -- content tone (comment)
base00 = '#72898f', -- content tone (winseparator)
base0 = '#adbcbc', -- content tone (foreground)
base1 = '#cad8d9', -- content tone (statusline/tabline)
base2 = '#ece3cc', -- background tone light (highlight)
base3 = '#fbf3db', -- background tone lighter (main)
-- accent
yellow = '#dbb32d',
orange = '#ed8649',
red = '#fa5750',
magenta = '#f275be',
violet = '#af88eb',
blue = '#4695f7',
cyan = '#41c7b9',
green = '#75b938',
-- git
add = '#75b938',
change = '#dbb32d',
delete = '#fa5750',
-- diagnostic
info = '#4695f7',
hint = '#75b938',
warning = '#dbb32d',
error = '#fa5750',
},
light = {
base3 = '#103c48', -- background tone darker (main)
base2 = '#2d5b69', -- background tone dark (highlight)
base1 = '#3a4d53', -- content tone (statusline/tabline)
base0 = '#53676d', -- content tone (foreground)
base00 = '#909995', -- content tone (winseparator)
base01 = '#909995', -- content tone (comment)
base02 = '#ece3cc', -- background tone (highlight/menu/LineNr)
base03 = '#fbf3db', -- background tone lighter (main)
-- accent
yellow = '#ad8900',
orange = '#c25d1e',
red = '#d2212d',
magenta = '#ca4898',
violet = '#8762c6',
blue = '#0072d4',
cyan = '#009c8f',
green = '#489100',
-- git
add = '#489100',
change = '#ad8900',
delete = '#d2212d',
-- diagnostic
info = '#0072d4',
hint = '#489100',
warning = '#ad8900',
error = '#d2212d',
},
},
}
return colors[((config.config or {}).palette or 'solarized')][vim.o.background]
end
--- Filter colors by selecting valid hexadecimal color values.
---
--- @param colors table A table containing color values to be filtered.
--- @return table Filtered colors table, containing only valid hexadecimal color values.
local function filter_colors(colors)
local filtered_colors = {}
for color_name, color_value in pairs(colors) do
if string.match(color_value, '#%x%x%x%x%x%x$') then
filtered_colors[color_name] = color_value
elseif string.match(color_value, '#%x%x%x$') then
color_value = string.sub(color_value, 2, #color_value)
filtered_colors[color_name] = '#' .. string.rep(color_value, 2)
end
end
return filtered_colors
end
--- Merge custom colors with solarized default colors
---
--- @param colors table A table containing new color values to be added.
--- @param custom_colors table
function M.extend_colors(colors, custom_colors)
local c = vim.deepcopy(colors)
custom_colors = filter_colors(custom_colors)
return vim.tbl_extend('force', c, custom_colors)
end
return M

View file

@ -0,0 +1,112 @@
---@class solarized.palette
---@field base0? string
---@field base00? string
---@field base01? string
---@field base02? string
---@field base03? string
---@field base04? string
---@field base1? string
---@field base2? string
---@field base3? string
---@field blue? string
---@field cyan? string
---@field diag_error? string
---@field diag_hint? string
---@field diag_info? string
---@field diag_ok? string
---@field diag_warning? string
---@field git_add? string
---@field git_delete? string
---@field git_modify? string
---@field green? string
---@field magenta? string
---@field mix_blue? string
---@field mix_cyan? string
---@field mix_green? string
---@field mix_magenta? string
---@field mix_orange? string
---@field mix_red? string
---@field mix_violet? string
---@field mix_yellow? string
---@field orange? string
---@field red? string
---@field violet? string
---@field yellow? string
local M = {}
---@type solarized.palette
M.solarized = {
base0 = '#839496',
base00 = '#657B83',
base01 = '#586E75',
base02 = '#073642',
base03 = '#002B36',
base04 = '#001E26',
base1 = '#93A1A1',
base2 = '#eee8d5 ',
base3 = '#fdf6e3 ',
blue = '#268BD2',
cyan = '#2AA198',
diag_error = '#DC322F',
diag_hint = '#6C71C4',
diag_info = '#6C71C4',
diag_ok = '#859900',
diag_warning = '#B58900',
git_add = '#268BD2',
git_delete = '#DC322F',
git_modify = '#B58900',
green = '#859900',
magenta = '#D33682',
mix_blue = '#0B4764',
mix_cyan = '#0C4E53',
mix_green = '#274C25',
mix_magenta = '#3F2E4C',
mix_orange = '#3C342C',
mix_red = '#422D33',
mix_violet = '#204060',
mix_yellow = '#364725',
orange = '#CB4B16',
red = '#DC322F',
violet = '#6C71C4',
yellow = '#B58900',
}
---@type solarized.palette
M.selenized = {
base03 = '#103c48',
base02 = '#2d5b69',
base01 = '#72898f',
base00 = '#53676d',
base0 = '#adbcbc',
base1 = '#cad8d9',
base2 = '#ece3cc',
base3 = '#fbf3db',
yellow = '#dbb32d',
orange = '#ed8649',
red = '#fa5750',
magenta = '#f275be',
violet = '#af88eb',
blue = '#4695f7',
cyan = '#41c7b9',
green = '#75b938',
base04 = '#184956',
mix_yellow = '#4c5f3f',
mix_orange = '#525248',
mix_red = '#56444a',
mix_magenta = '#534d6b',
mix_violet = '#3f5278',
mix_blue = '#20567c',
mix_cyan = '#1e6569',
mix_green = '#2e6143',
diag_error = '#fa5750',
diag_hint = '#af88eb',
diag_info = '#af88eb',
diag_ok = '#75b938',
diag_warning = '#dbb32d',
git_add = '#4695f7',
git_delete = '#fa5750',
git_modify = '#dbb32d',
}
return M

View file

@ -0,0 +1,75 @@
local M = {}
---@type solarized.palette
M.solarized = {
base03 = '#002b36',
base02 = '#073642',
base01 = '#586E75',
base00 = '#657B83',
base0 = '#839496',
base1 = '#93A1A1',
base2 = '#EEE8D5',
base3 = '#FDF6E3',
blue = '#268BD2',
cyan = '#2AA198',
orange = '#CB4B16',
red = '#DC322F',
violet = '#6C71C4',
yellow = '#B58900',
green = '#859900',
magenta = '#D33682',
diag_error = '#DC322F',
diag_hint = '#268BD2',
diag_info = '#268BD2',
diag_ok = '#859900',
diag_warning = '#B58900',
git_add = '#859900',
git_delete = '#DC322F',
git_modify = '#B58900',
mix_blue = '#bcd5dd',
mix_cyan = '#bddccc',
mix_green = '#d9da9e',
mix_magenta = '#f0bcc5',
mix_orange = '#eec2a5',
mix_red = '#f3bbac',
mix_violet = '#d1ced9',
mix_yellow = '#e7d59e',
}
---@type solarized.palette
M.selenized = {
base03 = '#103c48',
base02 = '#2d5b69',
base01 = '#3a4d53',
base00 = '#53676d',
base0 = '#53676d',
base1 = '#909995',
base2 = '#ece3cc',
base3 = '#fbf3db',
yellow = '#ad8900',
orange = '#c25d1e',
red = '#d2212d',
magenta = '#ca4898',
violet = '#8762c6',
blue = '#0072d4',
cyan = '#009c8f',
green = '#489100',
diag_error = '#d2212d',
diag_hint = '#0072d4',
diag_info = '#0072d4',
diag_ok = '#489100',
diag_warning = '#ad8900',
git_add = '#489100',
git_delete = '#DC322F',
git_modify = '#ad8900',
mix_yellow = '#e3d399',
mix_orange = '#e9c6a2',
mix_red = '#eeb4a6',
mix_magenta = '#ecbfc6',
mix_violet = '#d8c7d4',
mix_blue = '#afccd8',
mix_cyan = '#afd8c4',
mix_green = '#c5d599',
}
return M

View file

@ -1,16 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- When `termguicolors` is enabled, this plugin is designed to work automatically,
-- deriving colours from the user's theme.
--
-- My attempt to fix bufferline on transparent background
if config.transparent then
set_hl('BufferLineFill', { bg = c.base02 })
set_hl('BufferLineBufferSelected', { fg = c.base2, italic = true })
set_hl('BufferLineSeparator', { fg = c.base02 })
set_hl('BufferLineSeparatorSelected', { fg = c.base02 })
set_hl('BufferLineSeparatorVisible', { fg = c.base02 })
end
end

View file

@ -1,36 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- set_hl('CmpItemAbbr') -- Highlight group for unmatched characters of each completion field.
set_hl('CmpItemAbbrDeprecated', { fg = c.base1, strikethrough = true }) -- Highlight group for unmatched characters of each deprecated completion field.
set_hl('CmpItemAbbrMatch', { fg = c.yellow }) -- Highlight group for matched characters of each completion field.
set_hl('CmpItemAbbrMatchFuzzy', { fg = c.yellow }) -- Highlight group for fuzzy-matched characters of each completion field.
-- set_hl('CmpItemKind') -- Highlight group for the kind of the field.
-- set_hl('CmpItemMenu') -- The menu field's highlight group.
set_hl('CmpItemKindReference', { link = 'Underlined' })
set_hl('CmpItemKindUnit', { link = 'Number' })
set_hl('CmpItemKindEnum', { link = 'Type' })
set_hl('CmpItemKindField', { link = '@field' })
set_hl('CmpItemKindClass', { link = 'Type' })
set_hl('CmpItemKindFile', { fg = c.base0 })
set_hl('CmpItemKindProperty', { link = '@field' })
set_hl('CmpItemKindMethod', { link = 'Function' })
set_hl('CmpItemKindKeyword', { link = 'Keyword' })
set_hl('CmpItemKindFolder', { link = 'Directory' })
set_hl('CmpItemKindSnippet', { link = 'Keyword' })
set_hl('CmpItemKindVariable', { link = 'Identifier' })
set_hl('CmpItemKindStruct', { link = 'Structure' })
set_hl('CmpItemKindInterface', { link = 'Type' })
set_hl('CmpItemKindTypeParameter', { link = 'Type' })
set_hl('CmpItemKindEnumMember', { link = 'Constant' })
set_hl('CmpItemKindEvent', { fg = c.base2 })
set_hl('CmpItemKindConstructor', { link = '@constructor' })
set_hl('CmpItemKindConstant', { link = 'Constant' })
set_hl('CmpItemKindModule', { link = '@namespace' })
set_hl('CmpItemKindValue', { fg = c.base2 })
set_hl('CmpItemKindColor', { fg = c.magenta })
set_hl('CmpItemKindFunction', { link = 'Function' })
set_hl('CmpItemKindText', { link = 'String' })
end

View file

@ -1,23 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- general
set_hl('DashboardHeader', { fg = c.base00 })
set_hl('DashboardFooter', { fg = c.base00 })
-- Hyper
set_hl('DashboardProjectTitle', { fg = c.blue })
set_hl('DashboardProjectTitleIcon', { link = 'DashboardProjectTitle' })
set_hl('DashboardProjectIcon', { link = 'Directory' })
set_hl('DashboardMruTitle', { link = 'DashboardProjectTitle' })
set_hl('DashboardMruIcon', { link = 'DashboardMruTitle' })
set_hl('DashboardFiles', { fg = c.base0 })
set_hl('DashboardShotCutIcon', { fg = c.magenta })
-- Doom theme
set_hl('DashboardDesc', { fg = c.base0 })
set_hl('DashboardKey', { fg = c.magenta })
set_hl('DashboardIcon', { link = 'Directory' })
set_hl('DashboardShotCut', { fg = c.base00 })
end

View file

@ -1,52 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('DiagnosticError', { fg = c.error }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticWarn', { fg = c.warning }) --Used as the base highlight group.(except Underline)
set_hl('DiagnosticInfo', { fg = c.info }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticHint', { fg = c.hint }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticOk', { fg = c.cyan }) -- Used as the base highlight group.(except Underline)
-- set_hl('DiagnosticVirtualTextError') -- Used for "Error" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextWarn') -- Used for "Warn" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextInfo') -- Used for "Info" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextHint') -- Used for "Hint" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextOk') -- Used for "Ok" diagnostic virtual text.
set_hl('DiagnosticUnderlineError', { fg = c.error, sp = c.error }) --Used to underline "Error" diagnostics.
set_hl('DiagnosticUnderlineWarn', { fg = c.warning, sp = c.warning }) -- Used to underline "Warn" diagnostics.
set_hl('DiagnosticUnderlineInfo', { fg = c.info, sp = c.info }) -- Used to underline "Info" diagnostics.
set_hl('DiagnosticUnderlineHint', { fg = c.hint, sp = c.hint }) -- Used to underline "Hint" diagnostics.
set_hl('DiagnosticUnderlineOk', { fg = c.cyan, sp = c.cyan }) -- Used to underline "Ok" diagnostics.
-- set_hl('DiagnosticFloatingError') -- Used to color "Error" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingWarn') -- Used to color "Warn" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingInfo') -- Used to color "Info" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingHint') -- Used to color "Hint" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingOk') -- Used to color "Ok" diagnostic messages in diagnostics float.
set_hl(
'DiagnosticSignError',
{ fg = c.error, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for "Error" signs in sign column.
set_hl(
'DiagnosticSignWarn',
{ fg = c.warning, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for "Warn" signs in sign column.
set_hl(
'DiagnosticSignInfo',
{ fg = c.info, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for "Info" signs in sign column.
set_hl(
'DiagnosticSignHint',
{ fg = c.hint, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for "Hint" signs in sign column.
set_hl(
'DiagnosticSignOk',
{ fg = c.cyan, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for "Ok" signs in sign column.
-- set_hl('DiagnosticDeprecated') -- Used for deprecated or obsolete code.
-- set_hl('DiagnosticUnnecessary') -- Used for unnecessary or unused code.
end

View file

@ -1,110 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('ColorColumn', { bg = c.base02 }) -- used for columns
set_hl('Conceal', { fg = c.blue }) -- placeholder characters
set_hl('CurSearch', { fg = c.base2, bg = c.base02 }) -- highlight under cursor
set_hl('Cursor', { fg = c.base03, bg = c.base0 }) -- character under cursor
set_hl('lCursor', { link = 'Cursor' }) -- character under the cursor
set_hl('CursorIM', { link = 'Cursor' }) -- like cursor, but IME mode
set_hl('CursorColumn', { link = 'ColorColumn' }) -- screen-column at the cursor
set_hl('CursorLine', { bg = c.base02, sp = c.base1 }) -- screen-line at the cursor
set_hl('Directory', { fg = c.blue }) -- directory names
set_hl('DiffAdd', { fg = c.add, reverse = true }) -- Added line
set_hl('DiffChange', { fg = c.change, reverse = true }) -- Changed line
set_hl('DiffDelete', { fg = c.delete, reverse = true }) -- Deleted line
set_hl('DiffText', { fg = c.blue, reverse = true }) -- Changed Text
set_hl('EndOfBuffer', { fg = c.base03 }) -- Filler lines (~)
set_hl('TermCursor', { link = 'Cursor' }) -- Cursor in a focused terminal
set_hl('TermCursorNC', { fg = c.base03, bg = c.base0 }) -- Cursor in an unfocused terminal
set_hl('ErrorMsg', { fg = c.error, reverse = true }) -- Error messages on the command line
set_hl(
'WinSeparator',
{ fg = c.base00, bg = c.base02 },
{ transparent = config.transparent }
) -- Separators between window splits
set_hl(
'Folded',
{ fg = c.base0, bg = c.base02, underline = true, bold = true }
) -- Line used for closed folds
set_hl('FoldColumn', { fg = c.base0, bg = c.base02, bold = true }) -- 'foldcolumn'
set_hl(
'SignColumn',
{ fg = c.base0, bg = c.base02 },
{ transparent = config.transparent }
) -- Column were signs are displayed
set_hl('IncSearch', { fg = c.orange, standout = true }) -- 'incsearch' highlighting, also for the text replaced
set_hl('Substitute', { link = 'IncSearch' }) -- :substitute replacement text highlight
set_hl(
'LineNr',
{ fg = c.base01, bg = c.base02 },
{ transparent = config.transparent }
) -- Line number for ":number" and ":#" commands
set_hl('LineNrAbove', { link = 'LineNr' }) -- Line number, above the cursor line
set_hl('LineNrBelow', { link = 'LineNr' }) -- Line number, below the cursor
set_hl(
'CursorLineNr',
{ fg = c.base1, bg = c.base02, bold = true },
{ transparent = config.transparent }
) -- Like LineNr when 'cursorline' is set
set_hl('CursorLineFold', { link = 'FoldColumn' }) -- Like FoldColumn when 'cursorline' is set
set_hl('CursorLineSign', { link = 'SignColumn' }) -- Like SignColumn when 'cursorline' is set
set_hl('MatchParen', { fg = c.red, bg = c.base01, bold = true }) -- Character under the cursor or just before it
set_hl('ModeMsg', { fg = c.blue }) -- 'showmode' message (e.g., "-- INSERT --")
set_hl('MsgArea', { link = 'Normal' }) -- 'Area for messages and cmdline'
set_hl('MsgSeparator', { link = 'Normal' }) -- Separator for scrolled messages msgsep.
set_hl('MoreMsg', { fg = c.blue }) -- more-prompt
set_hl('NonText', { fg = c.base1, bold = true }) -- '@' at the end of the window
set_hl(
'Normal',
{ fg = c.base0, bg = c.base03 },
{ transparent = config.transparent }
) -- Normal text
set_hl('NormalFloat', { fg = c.base0, bg = c.base02 }) -- Normal text in floating windows
set_hl('FloatBorder', { link = 'WinSeparator', bold = true }) -- Border of floating windows.
set_hl('FloatTitle', { fg = c.orange }) -- Title of float windows.
set_hl('NormalNC', { link = 'Normal' }) -- Normal text in non-current windows.
set_hl(
'Pmenu',
{ fg = c.base0, bg = c.base02 },
{ transparent = config.transparent }
) -- Popup menu: Normal item
set_hl('PmenuSel', { fg = c.base2, bg = c.base01 }) -- Popup menu: Selected item
set_hl('PmenuKind', { link = 'Pmenu' }) -- Popup menu: Normal item kind
set_hl('PmenuKindSel', { link = 'PmenuSel' }) -- Popup menu: Selected item kind
set_hl('PmenuExtra', { link = 'Pmenu' }) -- Popup menu: Normal item extra text
set_hl('PmenuExtraSel', { link = 'PmenuSel' }) -- Popup menu: Selected item extra text
set_hl('PmenuSbar', { fg = c.base0, bg = c.base2 }) -- Popup menu: Scrollbar
set_hl('PmenuThumb', { fg = c.base03, bg = c.base0 }) -- Popup menu: Thumb of the scrollbar
set_hl('Question', { fg = c.cyan, bold = true }) -- hit-enter prompt and yes/no questions.
set_hl('QuickFixLine', { fg = c.base0, bg = c.base03 }) -- Current quickfix item in the quickfix window
set_hl('Search', { fg = c.yellow, reverse = true }) -- Last search pattern highlighting
set_hl('SpecialKey', { fg = c.red, reverse = true }) -- Unprintable characters: Text displayed differently from what it really is.
set_hl('SpellBad', { sp = c.red, undercurl = true }) -- Word that is not recognized by the spellchecker.
set_hl('SpellCap', { sp = c.violet, undercurl = true }) -- Word that should start with a capital
set_hl('SpellLocal', { sp = c.yellow, undercurl = true }) -- Word that is recognized by the spellchecker as one that is used in another region
set_hl('SpellRare', { sp = c.cyan, undercurl = true }) -- Word that is recognized by the spellchecker as one that is hardly ever used.
set_hl('StatusLine', { fg = c.base02, bg = c.base1 }) -- Status line of current window.
set_hl('StatusLineNC', { fg = c.base02, bg = c.base00 }) -- Status lines of not-current windows.
set_hl(
'TabLine',
{ fg = c.base0, bg = c.base02, sp = c.base0, underline = true }
) -- Tab pages line, not active tab page label.
set_hl(
'TabLineFill',
{ fg = c.base0, bg = c.base02, sp = c.base0, underline = true }
) -- Tab pages line, where there are no labels.
set_hl(
'TabLineSel',
{ fg = c.base2, bg = c.base01, sp = c.base0, underline = true }
) -- Tab pages line, active tab page label.
set_hl('Title', { fg = c.orange, bold = true }) -- Titles for output from ":set all", ":autocmd" etc.
set_hl('Visual', { bg = c.base02, standout = true }) -- Visual mode selection.
set_hl('VisualNOS', { link = 'Visual' }) -- Visual mode selection when vim is "Not Owning the Selection".
set_hl('WarningMsg', { fg = c.warning, bold = true }) -- Warning messages.
set_hl('Whitespace', { fg = c.base01 }) -- "nbsp", "space", "tab", "multispace", "lead" and "trail" in 'listchars'.
set_hl('WildMenu', { fg = c.base2, bg = c.base02 }) -- Current match in 'wildmenu' completion.
set_hl('WinBar', { link = 'Pmenu' }) -- Window bar of current window.
set_hl('WinBarNC', { link = 'WinBar' }) -- Window bar of not-current windows.
end

View file

@ -1,20 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl(
'GitSignsAdd',
{ fg = c.add, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for the text of 'add' signs
set_hl(
'GitSignsChange',
{ fg = c.change, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for the text of 'change' signs
set_hl(
'GitSignsDelete',
{ fg = c.delete, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for the text of 'delete' signs
end

View file

@ -1,9 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('HopNextKey', { fg = c.magenta })
set_hl('HopNextKey1', { fg = c.blue })
set_hl('HopNextKey2', { fg = '#1b6294' })
set_hl('HopUnmatched', { fg = c.base01 })
end

View file

@ -1,17 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('IndentBlanklineChar', { fg = c.base01 }) -- Highlight of indent character. Default: Whitespace
set_hl('IndentBlanklineSpaceChar', { link = 'IndentBlanklineChar' }) -- Highlight of space character. Default: Whitespace
set_hl('IndentBlanklineContextChar', { fg = c.base0 }) -- Highlight of indent character when base of current context. Default: Label
set_hl(
'IndentBlanklineContextSpaceChar',
{ link = 'IndentBlanklineContextChar' }
) -- Highlight of space characters one indent level of the current context. Default: Label
set_hl('IblIndent', { fg = c.base0, nocombine = true })
set_hl('IblScope', { fg = c.base01, nocombine = true })
-- set_hl('IndentBlanklineSpaceCharBlankline', {}) -- Highlight of space character on blank lines. Default: Whitespace
-- set_hl('IndentBlanklineContextStart', {}) -- Highlight of the first line of the current context. Default: Label
end

View file

@ -1,16 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('LspReferenceText', { link = 'Visual' }) -- used for highlighting "text" references
set_hl('LspReferenceRead', { link = 'Visual' }) -- used for highlighting "read" references
set_hl('LspReferenceWrite', { link = 'Visual' }) -- used for highlighting "write" references
set_hl('LspInlayHint', { fg = c.base01 }) -- used for highlighting inlay hints
-- if you want to me to enable the highlight groups bellow, please send a screenshot for me to see how
-- they look like or how to config for me to test.
-- set_hl('LspCodelens') -- Used to color the virtual text of the codelens.
-- set_hl('LspCodeLensSeparator') -- Used to color the separator between two or more code lenses.
-- set_hl('LspSignatureActiveParameter') -- Used to highlight the active parameter in the signature help. See
end

View file

@ -1,56 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- Float window
set_hl('SagaNormal', { link = 'Pmenu' })
set_hl(
'TitleString',
{ fg = c.orange, bold = true, bg = c.base02 },
{ transparent = config.transparent }
)
-- Outline
set_hl('OutlineIndent', { fg = c.green })
-- Icons
set_hl('SagaWinbarModule', { link = '@namespace' })
set_hl('SagaWinbarInterface', { link = 'Type' })
set_hl('SagaWinbarConstructor', { link = '@constructor' })
set_hl('SagaWinbarStruct', { link = 'Structure' })
set_hl('SagaWinbarObject', { link = '@field' })
set_hl('SagaWinbarUnit', { link = 'Number' })
set_hl('SagaWinbarFile', { fg = c.base0 })
set_hl('SagaWinbarSnippet', { link = 'Keyword' })
set_hl('SagaWinbarText', { fg = c.base1 })
set_hl('SagaWinbarTypeAlias', { link = 'Type' })
set_hl('SagaWinbarEvent', { fg = c.base2 })
set_hl('SagaWinbarParameter', { link = '@parameter' })
set_hl('SagaWinbarKey', { link = '@field' })
set_hl('SagaWinbarValue', { fg = c.base2 })
set_hl('SagaWinbarMacro', { link = 'Macro' })
set_hl('SagaWinbarNumber', { link = 'Number' })
set_hl('SagaWinbarConstant', { link = 'Constant' })
set_hl('SagaWinbarFunction', { link = 'Function' })
set_hl('SagaWinbarEnum', { link = 'Type' })
set_hl('SagaWinbarField', { link = '@field' })
set_hl('SagaWinbarProperty', { link = '@field' })
set_hl('SagaWinbarMethod', { link = 'Function' })
set_hl('SagaWinbarClass', { link = 'Type' })
set_hl('SagaWinbarFolder', { link = 'Directory' })
set_hl('SagaWinbarPackage', { link = 'Directory' })
set_hl('SagaWinbarStaticMethod', { link = 'Function' })
set_hl('SagaWinbarTypeParameter', { link = 'Type' })
set_hl('SagaWinbarEnumMember', { link = 'Constant' })
set_hl('SagaWinbarOperator', { link = 'Operator' })
set_hl('SagaWinbarNull', { link = 'Constant' })
set_hl('SagaWinbarNamespace', { link = '@namespace' })
set_hl('SagaWinbarArray', { link = 'Delimiter' })
set_hl('SagaWinbarBoolean', { link = 'Boolean' })
set_hl('SagaWinbarString', { link = 'String' })
set_hl('SagaWinbarVariable', { link = 'Identifier' })
set_hl('SagaWinbarFilename', { fg = c.base0 })
set_hl('SagaWinbarFolderName', { fg = c.base0 })
set_hl('SagaWinbarFileIcon', { link = 'Directory' })
set_hl('SagaWinbarSep', { link = 'Keyword' })
end

View file

@ -1,38 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- MiniCursor
set_hl('MiniCursorword', { bg = c.base02 })
-- MiniStatusLine
set_hl('MiniStatuslineModeNormal', { fg = c.base03, bg = c.blue })
set_hl('MiniStatuslineModeInsert', { fg = c.base03, bg = c.green })
set_hl('MiniStatuslineModeVisual', { fg = c.base03, bg = c.magenta })
set_hl('MiniStatuslineModeReplace', { fg = c.base03, bg = c.red })
set_hl('MiniStatuslineModeCommand', { fg = c.base03, bg = c.orange })
set_hl('MinistatusLineFileName', { fg = c.base0, bg = c.base02 })
set_hl('MiniStatuslineDevinfo', { fg = c.base03, bg = c.base1 })
set_hl('MiniStatuslineFileinfo', { fg = c.base03, bg = c.base1 })
set_hl('MiniStatuslineInactive', { fg = c.base01, bg = c.base03 })
-- MiniTabLine
set_hl('MiniTablineCurrent', { fg = c.base2, bg = c.base1 })
set_hl('MiniTablineVisible', { fg = c.base2, bg = c.base03 })
set_hl('MiniTablineHidden', { fg = c.base01, bg = c.base03 })
set_hl('MiniTablineModifiedCurrent', { link = 'MiniTabLineCurrent' })
set_hl('MiniTablineModifiedVisible', { link = 'MiniTablineVisible' })
set_hl('MiniTablineModifiedHidden', { link = 'MiniTablineHidden' })
set_hl('MiniTablineFill', { link = 'NormalFloat' })
set_hl('MiniTablineTabpagesection', { link = 'NormalFloat' })
-- MiniStarter
set_hl('MiniStarterCurrent', { link = 'CursorLine' })
set_hl('MiniStarterHeader', { fg = c.base00 })
set_hl('MiniStarterFooter', { fg = c.base00 })
set_hl('MiniStarterItem', { fg = c.base0 })
set_hl('MiniStarterItemBullet', { fg = c.blue })
set_hl('MiniStarterItemPrefix', { fg = c.blue })
set_hl('MiniStarterSection', { link = 'Title' })
set_hl('MiniStarterQuery', { fg = c.magenta, bg = 'NONE', bold = true })
end

View file

@ -1,33 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('NavicIconsFile', { fg = c.base00 })
set_hl('NavicIconsModule', { link = '@namespace' })
set_hl('NavicIconsNamespace', { link = '@namespace' })
set_hl('NavicIconsPackage', { link = 'Directory' })
set_hl('NavicIconsClass', { link = 'Type' })
set_hl('NavicIconsMethod', { link = 'Type' })
set_hl('NavicIconsProperty', { link = '@field' })
set_hl('NavicIconsField', { link = '@field' })
set_hl('NavicIconsConstructor', { link = '@constructor' })
set_hl('NavicIconsEnum', { link = 'Type' })
set_hl('NavicIconsInterface', { link = 'Type' })
set_hl('NavicIconsFunction', { link = 'Function' })
set_hl('NavicIconsVariable', { link = 'Identifier' })
set_hl('NavicIconsConstant', { link = 'Constant' })
set_hl('NavicIconsString', { link = 'String' })
set_hl('NavicIconsNumber', { link = 'Number' })
set_hl('NavicIconsBoolean', { link = 'Boolean' })
set_hl('NavicIconsArray', { link = 'Delimiter' })
set_hl('NavicIconsObject', { link = '@field' })
set_hl('NavicIconsKey', { link = '@field' })
set_hl('NavicIconsNull', { link = 'Constant' })
set_hl('NavicIconsEnumMember', { link = 'Constant' })
set_hl('NavicIconsStruct', { link = 'Structure' })
set_hl('NavicIconsEvent', { fg = c.base2 })
set_hl('NavicIconsOperator', { link = 'Operator' })
set_hl('NavicIconsTypeParameter', { link = '@parameter' })
set_hl('NavicText', { fg = c.base1 })
set_hl('NavicSeparator', { link = 'Keyword' })
end

View file

@ -1,27 +0,0 @@
return function(c)
local blend = require('solarized.utils.colors').blend
local utils = require('solarized.utils')
local set_hl = utils.set_hl
local alpha = 0.05
set_hl('NeogitCursorLine', { link = 'CursorLine' })
set_hl('NeogitBranch', { fg = c.magenta })
set_hl('NeogitRemote', { fg = c.violet })
set_hl(
'NeogitHunkHeader',
{ fg = c.orange, bg = blend(c.orange, c.base03, alpha) }
)
set_hl('NeogitHunkHeaderHighlight', { link = 'Title' })
set_hl('NeogitDiffContextHighlight', { fg = c.base00, bg = c.base03 })
set_hl('NeogitDiffContext', { fg = c.base00, bg = c.base03 })
set_hl(
'NeogitDiffDeleteHighlight',
{ fg = c.red, bg = blend(c.red, c.base03, alpha) }
)
set_hl('NeogitDiffDelete', { fg = c.red })
set_hl(
'NeogitDiffAddHighlight',
{ fg = c.green, bg = blend(c.green, c.base03, alpha) }
)
set_hl('NeogitDiffAdd', { fg = c.green })
end

View file

@ -1,28 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local set_hl = utils.set_hl
set_hl('NeoTreeNormal', {
fg = c.base0,
}, { transparent = config.transparent })
set_hl('NeoTreeNormalNC', { link = 'NeoTreeNormal' })
set_hl('NeoTreeEndOfBuffer', { fg = c.base02 })
set_hl('NeoTreeRootName', { link = 'Directory' })
set_hl('NeoTreeFileName', { fg = c.base0 })
set_hl('NeoTreeFileNameOpened', { link = 'Directory' })
set_hl('NeoTreeFloatBorder', { link = 'WinSeparator' })
set_hl('NeoTreeFloatTitle', { link = 'Title' })
set_hl('NeoTreeGitAdded', { fg = c.add, bg = 'NONE' })
set_hl('NeoTreeGitConflict', { fg = c.change })
set_hl('NeoTreeGitDeleted', { fg = c.delete })
set_hl('NeoTreeGitIgnored', { fg = c.base01, italic = true })
set_hl('NeoTreeGitModified', { fg = c.change })
set_hl('NeoTreeGitUnstaged', { fg = c.change })
set_hl('NeoTreeGitUntracked', { fg = c.change })
set_hl('NeoTreeGitStaged', { fg = c.add })
set_hl('NeoTreeIndentMarker', { fg = c.base01 })
set_hl('NeoTreeDotfile', { fg = c.base01 })
set_hl('NeoTreeFileStats', { fg = c.base01 })
set_hl('NeoTreeTitleBar', { fg = darken(c.blue, 50), bg = c.blue })
end

View file

@ -1,9 +0,0 @@
return function(c)
local set_hl = require('solarized.utils').set_hl
set_hl('NoiceFormatProgressTodo', { fg = c.base01, reverse = true })
set_hl('NoiceFormatProgressDone', { fg = c.cyan, reverse = true })
set_hl('NoiceLspProgressSpinner', { fg = c.cyan })
set_hl('NoiceLspProgressClient', { fg = c.blue })
set_hl('NoiceLspProgressTitle', { link = 'Title' })
end

View file

@ -1,26 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('NotifyBackground', { bg = c.base03 })
set_hl('NotifyERRORBorder', { fg = c.error })
set_hl('NotifyWARNBorder', { fg = c.warn })
set_hl('NotifyINFOBorder', { fg = c.info })
set_hl('NotifyDEBUGBorder', { fg = c.magenta })
set_hl('NotifyTRACEBorder', { fg = c.violet })
set_hl('NotifyERRORIcon', { link = 'NotifyERRORBorder' })
set_hl('NotifyWARNIcon', { link = 'NotifyWARNBorder' })
set_hl('NotifyINFOIcon', { link = 'NotifyINFOBorder' })
set_hl('NotifyDEBUGIcon', { link = 'NotifyDEBUGBorder' })
set_hl('NotifyTRACEIcon', { link = 'NotifyTRACEBorder' })
set_hl('NotifyERRORTitle', { link = 'NotifyERRORBorder' })
set_hl('NotifyWARNTitle', { link = 'NotifyWARNBorder' })
set_hl('NotifyINFOTitle', { link = 'NotifyINFOBorder' })
set_hl('NotifyDEBUGTitle', { link = 'NotifyDEBUGTitle' })
set_hl('NotifyTRACETitle', { link = 'NotifyTRACEBorder' })
set_hl('NotifyERRORBody', { link = 'Normal' })
set_hl('NotifyWARNBody', { link = 'Normal' })
set_hl('NotifyINFOBody', { link = 'Normal' })
set_hl('NotifyDEBUGBody', { link = 'Normal' })
set_hl('NotifyTRACEBody', { link = 'Normal' })
end

View file

@ -1,32 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- Default highlight
set_hl('@lsp.type.class', { link = 'Type' }) -- Type
set_hl('@lsp.type.decorator', { link = 'Function' }) -- Function
set_hl('@lsp.type.enum', { link = 'Type' }) -- Type
set_hl('@lsp.type.enumMember', { link = 'Constant' }) -- Constant
set_hl('@lsp.type.function', { link = 'Function' }) -- Function
set_hl('@lsp.type.interface', { link = 'Type' }) -- Type
set_hl('@lsp.type.macro', { link = 'Macro' }) -- Keyword
set_hl('@lsp.type.method', { link = 'Function' }) -- Function
set_hl('@lsp.type.namespace', { link = '@namespace' }) -- Namespace
set_hl(
'@lsp.type.parameter',
{ fg = c.base0, italic = true },
{ styles = config.styles.parameters }
)
set_hl('@lsp.type.property', { link = '@field' }) -- Property
set_hl('@lsp.type.struct', { link = 'Structure' }) -- Structure
set_hl('@lsp.type.type', { link = 'Type' }) -- Type
set_hl('@lsp.type.typeParameter', { link = 'Type' }) -- Type
set_hl('@lsp.type.variable', { link = 'Identifier' }) -- Identifier
-- Extra highlight
set_hl('@lsp.typemod.variable.readonly', { link = 'Constant' }) -- Constant variables ex: const hello = 'Hello World'
set_hl('@lsp.typemod.variable.global', { link = 'Constant' }) -- Global variables ex: HELLO = 'Hello World'
set_hl('@lsp.typemod.keyword.documentation', { link = 'Keyword' }) -- documentation comments
set_hl('@lsp.typemod.class.documentation', { link = 'Type' }) -- documentation comments
set_hl('@lsp.typemod.property.readonly', { link = 'Constant' }) -- Ex: System."out".println()
end

View file

@ -1,48 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl(
'Comment',
{ fg = c.base01, italic = true },
{ styles = config.styles.comments }
) -- any comment
set_hl('Constant', { fg = c.cyan }, { styles = config.styles.constants }) -- any constant
set_hl('String', { fg = c.cyan }) -- a string constant: "this is a string"
set_hl('Character', { link = 'String' }) -- a character constant: 'c', '\n'
set_hl('Number', { fg = c.magenta }, { styles = config.styles.numbers }) -- a number constant: 234, 0xff
set_hl('Boolean', { link = 'Constant' }) -- a boolean constant: TRUE, false
set_hl('Float', { link = 'Number' }) -- a floating point constant: 2.3e10
set_hl('Identifier', { fg = c.blue }, { styles = config.styles.variables }) -- any variable name
set_hl('Function', { fg = c.blue }, { styles = config.styles.functions }) -- function name (also: methods for classes)
set_hl('Statement', { fg = c.green }) -- any statement
set_hl('Conditional', { link = 'Statement' }) -- if, then, else, endif, switch, etc.
set_hl('Repeat', { link = 'Statement' }) -- for, do, while, etc.
set_hl('Label', { link = 'Statement' }) -- case, default, etc.
set_hl('Operator', { link = 'Statement' }) -- "sizeof", "+", "*", etc.
set_hl(
'Keyword',
{ fg = c.base1, bold = true },
{ styles = config.styles.keywords }
) -- any other keyword
set_hl('Exception', { link = 'Statement' }) -- try, catch, throw
set_hl('PreProc', { fg = c.orange }) -- generic Preprocessor
set_hl('Include', { link = 'PreProc' }) -- preprocessor #include
set_hl('Define', { link = 'PreProc' }) -- preprocessor #define
set_hl('Macro', { link = 'PreProc' }) -- same as Define
set_hl('PreCondit', { link = 'PreProc' }) -- preprocessor #if, #else, #endif, etc.
set_hl('Type', { fg = c.yellow }, { styles = config.styles.types }) -- int, long, char, etc.
set_hl('StorageClass', { fg = c.yellow }) -- static, register, volatile, etc.
set_hl('Structure', { fg = c.yellow }) -- struct, union, enum, etc.
set_hl('Typedef', { fg = c.yellow }) -- A typedef
set_hl('Special', { fg = c.red }) -- special symbol
set_hl('SpecialChar', { link = 'Special' }) -- special character in a constant
set_hl('Tag', { link = 'Special' }) -- you can use CTRL-] on this
set_hl('Delimiter', { fg = c.base00 }) -- character that needs attention
set_hl('SpecialComment', { link = 'Special' }) -- special things inside a comment
set_hl('Debug', { link = 'Special' }) -- debugging statements
set_hl('Underlined', { fg = c.violet }) --text that stands out, HTML links
set_hl('Ignore') --left blank, hidden |hl-Ignore|
set_hl('Error', { fg = c.error, bold = true }) --any erroneous construct
set_hl('Todo', { fg = c.magenta, bold = true }) --anything that needs extra attention; mostly the keywords TODO FIXME and XXX
end

View file

@ -1,43 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('TelescopeSelection', { link = 'Visual' })
set_hl('TelescopeSelectionCaret', { link = 'TelescopeSelection' })
set_hl('TelescopeMultiSelection', { link = 'Type' })
set_hl('TelescopeMultiIcon', { fg = c.cyan })
-- "Normal" in the floating windows created by telescope.
set_hl(
'TelescopeNormal',
{ fg = c.base0, bg = c.base02 },
{ transparent = config.transparent }
)
set_hl('TelescopePreviewNormal', { link = 'TelescopeNormal' })
set_hl('TelescopePromptNormal', { link = 'TelescopeNormal' })
set_hl('TelescopeResultsNormal', { link = 'TelescopeNormal' })
-- Border highlight groups.
-- Use TelescopeBorder to override the default.
-- Otherwise set them specifically
set_hl('TelescopeBorder', { link = 'WinSeparator' })
set_hl('TelescopePromptBorder', { link = 'TelescopeBorder' })
set_hl('TelescopeResultsBorder', { link = 'TelescopeBorder' })
set_hl('TelescopePreviewBorder', { link = 'TelescopeBorder' })
-- Title highlight groups.
-- Use TelescopeTitle to override the default.
-- Otherwise set them specifically
set_hl('TelescopeTitle', { fg = c.blue, reverse = true })
set_hl('TelescopePromptTitle', { link = 'TelescopeTitle' })
set_hl('TelescopeResultsTitle', { link = 'TelescopeTitle' })
set_hl('TelescopePreviewTitle', { link = 'TelescopeTitle' })
set_hl('TelescopePromptCounter', { link = 'NonText' })
-- Used for highlighting characters that you match.
set_hl('TelescopeMatching', { fg = c.yellow })
-- Used for the prompt prefix
set_hl('TelescopePromptPrefix', { fg = c.magenta })
end

View file

@ -1,50 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local colortool = require('solarized.utils.colors')
local set_hl = utils.set_hl
local colorFunc
local percentage = 80
if vim.o.background == 'light' then
colorFunc = colortool.lighten
else
colorFunc = colortool.darken
end
-- TODO: TODO
-- WARN: WARN
-- TEST: TEST
-- PERF: PERF
-- NOTE: NOTE
-- HACK: HACK
set_hl('TodoFgTODO', { fg = c.info })
set_hl('TodoFgWARN', { fg = c.warning })
set_hl('TodoFgTEST', { fg = c.violet })
set_hl('TodoFgPERF', { fg = c.magenta })
set_hl('TodoFgNOTE', { fg = c.hint })
set_hl('TodoFgHACK', { fg = c.cyan })
set_hl('TodoFgFIX', { fg = c.error })
set_hl('TodoSignTODO', { fg = c.info })
set_hl('TodoSignWARN', { fg = c.warning })
set_hl('TodoSignTEST', { fg = c.violet })
set_hl('TodoSignPERF', { fg = c.magenta })
set_hl('TodoSignNOTE', { fg = c.hint })
set_hl('TodoSignHACK', { fg = c.cyan })
set_hl('TodoSignFIX', { fg = c.error })
set_hl('TodoBgTODO', { fg = c.info, bg = colorFunc(c.info, percentage) })
set_hl(
'TodoBgWARN',
{ fg = c.warning, bg = colorFunc(c.warning, percentage) }
)
set_hl('TodoBgTEST', { fg = c.violet, bg = colorFunc(c.violet, percentage) })
set_hl(
'TodoBgPERF',
{ fg = c.magenta, bg = colorFunc(c.magenta, percentage) }
)
set_hl('TodoBgNOTE', { fg = c.hint, bg = colorFunc(c.hint, percentage) })
set_hl('TodoBgHACK', { fg = c.cyan, bg = colorFunc(c.cyan, percentage) })
set_hl('TodoBgFIX', { fg = c.error, bg = colorFunc(c.error, percentage) })
end

View file

@ -1,66 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local base04 = darken(c.base03, 10)
local set_hl = utils.set_hl
set_hl('NvimTreeSymlink', { link = 'Underlined' })
set_hl('NvimTreeSymlinkIcon', { link = 'Directory' })
-- set_hl('NvimTreeSymlinkFolderName') -- (Directory)
set_hl('NvimTreeFolderName', { fg = c.base0 }) -- (Directory)
set_hl('NvimTreeRootFolder', { link = 'Title' })
set_hl('NvimTreeFolderIcon', { link = 'Directory' })
-- set_hl('NvimTreeOpenedFolderIcon') -- (NvimTreeFolderIcon)
-- set_hl('NvimTreeClosedFolderIcon') -- (NvimTreeFolderIcon)
-- set_hl('NvimTreeFileIcon')
set_hl('NvimTreeEmptyFolderName', { fg = c.base0 }) -- (Directory)
-- set_hl('NvimTreeOpenedFolderName') -- (Directory)
set_hl('NvimTreeExecFile', { link = 'Function' })
set_hl('NvimTreeOpenedFile', { fg = c.blue, bold = true })
set_hl('NvimTreeModifiedFile', { fg = c.change })
set_hl('NvimTreeSpecialFile', { link = 'Special' })
-- set_hl('NvimTreeImageFile')
set_hl('NvimTreeIndentMarker', { fg = c.base01 })
-- set_hl('NvimTreeLspDiagnosticsError') -- (DiagnosticError)
-- set_hl('NvimTreeLspDiagnosticsWarning') -- (DiagnosticWarn)
set_hl('NvimTreeLspDiagnosticsInformation') -- (DiagnosticInfo)
set_hl('NvimTreeLspDiagnosticsHint') -- (DiagnosticHint)
set_hl('NvimTreeGitDirty', { fg = c.change })
set_hl('NvimTreeGitStaged', { fg = c.add })
set_hl('NvimTreeGitMerge', { fg = c.change })
set_hl('NvimTreeGitRenamed', { fg = c.add })
set_hl('NvimTreeGitNew', { fg = c.add })
set_hl('NvimTreeGitDeleted', { fg = c.delete })
-- set_hl('NvimTreeGitIgnored') -- (Comment)
-- set_hl('NvimTreeWindowPicker')
set_hl(
'NvimTreeNormal',
{ fg = c.base0, bg = base04 },
{ transparent = config.transparent }
)
set_hl('NvimTreeNormalFloat', { link = 'NvimTreeNormal' })
set_hl('NvimTreeEndOfBuffer', { fg = base04 }) -- (NonText)
-- set_hl('NvimTreeCursorLine') -- (CursorLine)
-- set_hl('NvimTreeCursorLineNr') -- (CursorLineNr)
-- set_hl('NvimTreeLineNr') -- (LineNr)
set_hl(
'NvimTreeWinSeparator',
{ fg = base04, bg = base04 },
{ transparent = config.transparent }
) -- (WinSeparator)
-- set_hl('NvimTreeCursorColumn') -- (CursorColumn)
--
-- There are also links for file highlight with git properties, linked to their
-- Git equivalent:
--
-- set_hl('NvimTreeFileDirty') -- (NvimTreeGitDirty)
-- set_hl('NvimTreeFileStaged') -- (NvimTreeGitStaged)
-- set_hl('NvimTreeFileMerge') -- (NvimTreeGitMerge)
-- set_hl('NvimTreeFileRenamed') -- (NvimTreeGitRenamed)
-- set_hl('NvimTreeFileNew') -- (NvimTreeGitNew)
-- set_hl('NvimTreeFileDeleted') -- (NvimTreeGitDeleted)
-- set_hl('NvimTreeFileIgnored') -- (NvimTreeGitIgnored)
-- set_hl('NvimTreeLiveFilterPrefix')
-- set_hl('NvimTreeLiveFilterValue')
-- set_hl('NvimTreeBookmark')
end

View file

@ -1,114 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
--[[ Highlight capture names as of nvim-treesitter commit `6806d7a` ]]
--
-- Identifiers
set_hl('@variable', { link = 'Identifier' }) -- various variable names
set_hl('@variable.builtin', { link = 'Identifier' }) -- built-in variable names (e.g. `this`)
set_hl(
'@variable.parameter',
{ fg = c.base0, italic = true },
{ styles = config.styles.parameters }
) -- parameters of a function
set_hl('@variable.member', { fg = c.blue }) -- object and struct fields
set_hl('@constant', { link = 'Constant' }) -- constant identifiers
set_hl('@constant.builtin', { link = 'Constant' }) -- built-in constant values
set_hl('@constant.macro', { link = 'Constant' }) -- constants defined by the preprocessor
set_hl('@module', { fg = c.violet }) -- modules or namespaces
set_hl('@module.builtin', { fg = c.cyan }) -- built-in modules or namespaces
set_hl('@label', { link = 'Label' }) -- GOTO and other labels (e.g. `label:` in C), including heredoc labels
-- Literals
set_hl('@string', { link = 'String' }) -- string literals
set_hl('@string.documentation', { link = 'Comment' }) -- string documenting code (e.g. Python docstrings)
set_hl('@string.regexp', { fg = c.violet }) -- regular expressions
set_hl('@string.escape', { link = 'Keyword' }) -- escape sequences
set_hl('@string.special', { link = 'SpecialChar' }) -- other special strings (e.g. dates)
set_hl('@string.special.symbol', { fg = c.violet }) -- symbols or atoms
set_hl('@string.special.url', { link = 'Underlined' }) -- URIs (e.g. hyperlinks)
set_hl('@string.special.path', { link = 'Underlined' }) -- filenames
set_hl('@character', { link = 'String' }) -- character literals
set_hl('@character.special', { link = '@string.special' }) -- special characters (e.g. wildcards)
set_hl('@character.printf', { fg = c.violet }) -- special characters (e.g. wildcards)
set_hl('@boolean', { link = 'Boolean' }) -- boolean literals
set_hl('@number', { link = 'Number' }) -- numeric literals
set_hl('@number.float', { link = 'Float' }) -- floating-point number literals
-- Types
set_hl('@type', { link = 'Type' }) -- type or class definitions and annotations
set_hl('@type.builtin', { link = 'Type' }) -- built-in types
set_hl('@type.definition', { link = 'Type' }) -- identifiers in type definitions (e.g. `typedef <type> <identifier>` in C)
set_hl('@type.qualifier', { link = 'Keyword' }) -- type qualifiers (e.g. `const`)
set_hl('@attribute', { link = 'Function' }) -- attribute annotations (e.g. Python decorators)
set_hl('@property', { link = '@variable.member' }) -- the key in key/value pairs
-- Functions
set_hl('@function', { link = 'Function' }) -- function definitions
set_hl('@function.builtin', { link = 'Function' }) -- built-in functions
set_hl('@function.call', { link = 'Function' }) -- function calls
set_hl('@function.macro', { link = 'Function' }) -- preprocessor macros
set_hl('@function.method', { link = 'Function' }) -- method definitions
set_hl('@function.method.call', { link = 'Function' }) -- method calls
set_hl('@constructor', { link = 'Function' }) -- constructor calls and definitions
set_hl('@operator', { link = 'Operator' }) -- symbolic operators (e.g. `+` / `*`)
-- Keywords
set_hl('@keyword', { link = 'Keyword' }) -- keywords not fitting into specific categories
set_hl('@keyword.coroutine', { link = 'Statement' }) -- keywords related to coroutines (e.g. `go` in Go, `async/await` in Python)
set_hl('@keyword.function', { link = 'Keyword' }) -- keywords that define a function (e.g. `func` in Go, `def` in Python)
set_hl('@keyword.operator', { link = 'Operator' }) -- operators that are English words (e.g. `and` / `or`)
set_hl('@keyword.import', { link = 'Include' }) -- keywords for including modules (e.g. `import` / `from` in Python)
set_hl('@keyword.storage', { link = 'StorageClass' }) -- modifiers that affect storage in memory or life-time
set_hl('@keyword.repeat', { link = 'Repeat' }) -- keywords related to loops (e.g. `for` / `while`)
set_hl('@keyword.return', { link = 'Statement' }) -- keywords like `return` and `yield`
set_hl('@keyword.debug', { link = 'Debug' }) -- keywords related to debugging
set_hl('@keyword.exception', { link = 'Exception' }) -- keywords related to exceptions (e.g. `throw` / `catch`)
set_hl('@keyword.conditional', { link = 'Conditional' }) -- keywords related to conditionals (e.g. `if` / `else`)
set_hl('@keyword.conditional.ternary', { link = 'Conditional' }) -- ternary operator (e.g. `?` / `:`)
set_hl('@keyword.directive', { link = 'PreProc' }) -- various preprocessor directives & shebangs
set_hl('@keyword.directive.define', { link = 'Define' }) -- preprocessor definition directives
-- Punctuations
set_hl('@punctuation.delimiter', { link = 'Delimiter' }) -- delimiters (e.g. `;` / `.` / `,`)
set_hl('@punctuation.bracket', { link = 'Delimiter' }) -- brackets (e.g. `()` / `{}` / `[]`)
set_hl('@punctuation.special', { link = 'Delimiter' }) -- special symbols (e.g. `{}` in string interpolation)
-- Comments
set_hl('@comment', { link = 'Comment' }) -- line and block comments
set_hl('@comment.documentation', { link = 'Comment' }) -- comments documenting code
set_hl('@comment.error', { fg = c.error }) -- error-type comments (e.g. `ERROR`, `FIXME`, `DEPRECATED:`)
set_hl('@comment.warning', { fg = c.warning }) -- warning-type comments (e.g. `WARNING:`, `FIX:`, `HACK:`)
set_hl('@comment.todo', { link = 'Todo' }) -- todo-type comments (e.g. `TODO:`, `WIP:`, `FIXME:`)
set_hl('@comment.note', { fg = c.info }) -- note-type comments (e.g. `NOTE:`, `INFO:`, `XXX`)
-- Markups
set_hl('@markup.strong', { fg = c.yellow }) -- bold text
set_hl('@markup.italic', { fg = c.yellow, italic = true }) -- italic text
set_hl('@markup.strikethrough', { fg = c.base01, strikethrough = true }) -- struck-through text
set_hl('@markup.underline', { link = 'Underlined' }) -- underlined text (only for literal underline markup!)
set_hl('@markup.heading', { link = 'Title' }) -- headings, titles (including markers)
set_hl('@markup.quote', { fg = c.cyan }) -- block quotes
set_hl('@markup.math', { link = 'Number' }) -- math environments (e.g. `$ ... $` in LaTeX)
set_hl('@markup.environment', { fg = c.base0 }) -- environments (e.g. in LaTeX)
set_hl('@markup.link', { link = 'Underlined' }) -- text references, footnotes, citations, etc.
set_hl('@markup.link.label', { link = 'Constant' }) -- link, reference descriptions
set_hl('@markup.link.url', { link = 'Underlined' }) -- URL-style links
set_hl('@markup.raw', { fg = c.base0 }) -- literal or verbatim text (e.g., inline code)
set_hl('@markup.raw.block', { fg = c.base0 }) -- literal or verbatim text as a stand-alone block (use priority 90 for blocks with injections)
set_hl('@markup.list', { link = 'Delimiter' }) -- list markers
set_hl('@markup.list.checked', { link = 'Delimiter' }) -- checked todo-style list markers
set_hl('@markup.list.unchecked', { link = 'Delimiter' }) -- unchecked todo-style list markers
-- Diffs
set_hl('@diff.plus', { fg = c.add }) -- added text (for diff files)
set_hl('@diff.minus', { fg = c.delete }) -- deleted text (for diff files)
set_hl('@diff.delta', { fg = c.change }) -- changed text (for diff files)
-- Tags
set_hl('@tag', { fg = c.blue, bold = true }) -- XML-style tag names (and similar)
set_hl('@tag.attribute', { fg = c.violet }) -- XML-style tag attributes
set_hl('@tag.delimiter', { fg = c.base01 }) -- XML-style tag delimiters
end

View file

@ -1,17 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('WhichKey', { fg = c.base0 }) -- the key
set_hl(
'WhichKeyNormal',
{ fg = c.base0, bg = c.base02 },
{ transparent = config.transparent }
)
set_hl('WhichKeyGroup', { fg = c.blue }) -- a group
set_hl('WhichKeySeparator', { fg = c.magenta }) -- the separator between the key and its label
set_hl('WhichKeyDesc', { fg = c.base2 }) -- the label of the key
-- set_hl('WhichKeyFloat') -- Normal in the popup window
-- set_hl('WhichKeyBorder', { link = 'WinSeparator' })
-- set_hl('WhichKeyValue') -- used by plugins that provide values
end

View file

@ -1,16 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- When `termguicolors` is enabled, this plugin is designed to work automatically,
-- deriving colours from the user's theme.
--
-- My attempt to fix bufferline on transparent background
if config.transparent then
set_hl('BufferLineFill', { bg = c.base02 })
set_hl('BufferLineBufferSelected', { fg = c.base2, italic = true })
set_hl('BufferLineSeparator', { fg = c.base02 })
set_hl('BufferLineSeparatorSelected', { fg = c.base02 })
set_hl('BufferLineSeparatorVisible', { fg = c.base02 })
end
end

View file

@ -1,36 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- set_hl('CmpItemAbbr') -- Highlight group for unmatched characters of each completion field.
set_hl('CmpItemAbbrDeprecated', { fg = c.base1, strikethrough = true }) -- Highlight group for unmatched characters of each deprecated completion field.
set_hl('CmpItemAbbrMatch', { link = 'IncSearch' }) -- Highlight group for matched characters of each completion field.
set_hl('CmpItemAbbrMatchFuzzy', { link = 'IncSearch' }) -- Highlight group for fuzzy-matched characters of each completion field.
-- set_hl('CmpItemKind') -- Highlight group for the kind of the field.
-- set_hl('CmpItemMenu') -- The menu field's highlight group.
set_hl('CmpItemKindReference', { link = 'Underlined' })
set_hl('CmpItemKindUnit', { link = 'Number' })
set_hl('CmpItemKindEnum', { link = 'Type' })
set_hl('CmpItemKindField', { link = '@field' })
set_hl('CmpItemKindClass', { link = 'Type' })
set_hl('CmpItemKindFile', { fg = c.base0 })
set_hl('CmpItemKindProperty', { link = '@field' })
set_hl('CmpItemKindMethod', { link = 'Function' })
set_hl('CmpItemKindKeyword', { link = 'Keyword' })
set_hl('CmpItemKindFolder', { link = 'Directory' })
set_hl('CmpItemKindSnippet', { link = 'Keyword' })
set_hl('CmpItemKindVariable', { link = 'Identifier' })
set_hl('CmpItemKindStruct', { link = 'Structure' })
set_hl('CmpItemKindInterface', { link = 'Type' })
set_hl('CmpItemKindTypeParameter', { link = 'Type' })
set_hl('CmpItemKindEnumMember', { link = 'Constant' })
set_hl('CmpItemKindEvent', { fg = c.base2 })
set_hl('CmpItemKindConstructor', { link = '@constructor' })
set_hl('CmpItemKindConstant', { link = 'Constant' })
set_hl('CmpItemKindModule', { link = '@namespace' })
set_hl('CmpItemKindValue', { fg = c.base2 })
set_hl('CmpItemKindColor', { fg = c.magenta })
set_hl('CmpItemKindFunction', { link = 'Function' })
set_hl('CmpItemKindText', { link = 'String' })
end

View file

@ -1,23 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- general
set_hl('DashboardHeader', { fg = c.red })
set_hl('DashboardFooter', { fg = c.violet })
-- Hyper
set_hl('DashboardProjectTitle', { fg = c.blue })
set_hl('DashboardProjectTitleIcon', { link = 'DashboardProjectTitle' })
set_hl('DashboardProjectIcon', { link = 'Directory' })
set_hl('DashboardMruTitle', { link = 'DashboardProjectTitle' })
set_hl('DashboardMruIcon', { link = 'DashboardMruTitle' })
set_hl('DashboardFiles', { fg = c.base0 })
set_hl('DashboardShotCutIcon', { fg = c.magenta })
-- Doom theme
set_hl('DashboardDesc', { fg = c.base00 })
set_hl('DashboardKey', { fg = c.magenta })
set_hl('DashboardIcon', { link = 'Directory' })
set_hl('DashboardShotCut', { fg = c.base00 })
end

View file

@ -1,32 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('DiagnosticError', { fg = c.error }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticWarn', { fg = c.warning }) --Used as the base highlight group.(except Underline)
set_hl('DiagnosticInfo', { fg = c.info }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticHint', { fg = c.hint }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticOk', { fg = c.cyan }) -- Used as the base highlight group.(except Underline)
-- set_hl('DiagnosticVirtualTextError') -- Used for "Error" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextWarn') -- Used for "Warn" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextInfo') -- Used for "Info" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextHint') -- Used for "Hint" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextOk') -- Used for "Ok" diagnostic virtual text.
set_hl('DiagnosticUnderlineError', { fg = c.error, sp = c.error }) --Used to underline "Error" diagnostics.
set_hl('DiagnosticUnderlineWarn', { fg = c.warning, sp = c.warning }) -- Used to underline "Warn" diagnostics.
set_hl('DiagnosticUnderlineInfo', { fg = c.info, sp = c.info }) -- Used to underline "Info" diagnostics.
set_hl('DiagnosticUnderlineHint', { fg = c.hint, sp = c.hint }) -- Used to underline "Hint" diagnostics.
set_hl('DiagnosticUnderlineOk', { fg = c.cyan, sp = c.cyan }) -- Used to underline "Ok" diagnostics.
-- set_hl('DiagnosticFloatingError') -- Used to color "Error" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingWarn') -- Used to color "Warn" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingInfo') -- Used to color "Info" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingHint') -- Used to color "Hint" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingOk') -- Used to color "Ok" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticSignError') -- Used for "Error" signs in sign column.
-- set_hl('DiagnosticSignWarn') -- Used for "Warn" signs in sign column.
-- set_hl('DiagnosticSignInfo') -- Used for "Info" signs in sign column.
-- set_hl('DiagnosticSignHint') -- Used for "Hint" signs in sign column.
-- set_hl('DiagnosticSignOk') -- Used for "Ok" signs in sign column.
-- set_hl('DiagnosticDeprecated') -- Used for deprecated or obsolete code.
-- set_hl('DiagnosticUnnecessary') -- Used for unnecessary or unused code.
end

View file

@ -1,109 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local base04 = darken(c.base03, 10)
local set_hl = utils.set_hl
if config.transparent then
set_hl('ColorColumn', { bg = c.base02 }) -- used for columns
else
set_hl('ColorColumn', { bg = base04 }) -- used for columns
end
set_hl('Conceal', { fg = c.blue }) -- placeholder characters
set_hl('CurSearch', { fg = c.base2, bg = c.base02 }) -- highlight under cursor
set_hl('Cursor', { fg = c.base03, bg = c.cyan }) -- character under cursor
set_hl('lCursor', { link = 'Cursor' }) -- character under the cursor
set_hl('CursorIM', { link = 'Cursor' }) -- like cursor, but IME mode
set_hl('CursorColumn', { link = 'ColorColumn' }) -- screen-column at the cursor
set_hl('CursorLine') -- screen-line at the cursor
set_hl('Directory', { fg = c.orange }) -- directory names
set_hl('DiffAdd', { fg = c.add }) -- Added line
set_hl('DiffChange', { fg = c.change }) -- Changed line
set_hl('DiffDelete', { fg = c.base03, bg = c.delete }) -- Deleted line
set_hl('DiffText', { fg = c.blue, reverse = true }) -- Changed Text
set_hl('EndOfBuffer', { fg = c.base03 }) -- Filler lines (~)
set_hl('TermCursor', { link = 'Cursor' }) -- Cursor in a focused terminal
set_hl('TermCursorNC', { fg = c.base03, bg = c.base0 }) -- Cursor in an unfocused terminal
set_hl('ErrorMsg', { fg = c.error }) -- Error messages on the command line
set_hl(
'WinSeparator',
{ fg = c.cyan, bg = base04 },
{ transparent = config.transparent }
) -- Separators between window splits
set_hl('Folded', { fg = c.base0, bg = c.base02 }) -- Line used for closed folds
set_hl('FoldColumn', { fg = c.base0, bg = base04 }) -- 'foldcolumn'
set_hl(
'SignColumn',
{ fg = c.base0, bg = c.base03 },
{ transparent = config.transparent }
) -- Column were signs are displayed
set_hl(
'IncSearch',
{ fg = c.base3, bg = base04, bold = true },
{ transparent = config.transparent }
) -- 'incsearch' highlighting, also for the text replaced
set_hl('Substitute', { fg = c.orange, reverse = true }) -- :substitute replacement text highlight
set_hl(
'LineNr',
{ fg = c.base01, bg = c.base03 },
{ transparent = config.transparent }
) -- Line number for ":number" and ":#" commands
set_hl('LineNrAbove', { link = 'LineNr' }) -- Line number, above the cursor line
set_hl('LineNrBelow', { link = 'LineNr' }) -- Line number, below the cursor
set_hl(
'CursorLineNr',
{ fg = c.base2, bg = c.base03 },
{ transparent = config.transparent }
) -- Like LineNr when 'cursorline' is set
set_hl('CursorLineFold', { link = 'FoldColumn' }) -- Like FoldColumn when 'cursorline' is set
set_hl('CursorLineSign', { link = 'SignColumn' }) -- Like SignColumn when 'cursorline' is set
set_hl('MatchParen', { fg = c.base2 }) -- Character under the cursor or just before it
set_hl('ModeMsg', { link = 'Normal' }) -- 'showmode' message (e.g., "-- INSERT --")
set_hl('MsgArea', { link = 'Normal' }) -- 'Area for messages and cmdline'
set_hl('MsgSeparator', { link = 'Normal' }) -- Separator for scrolled messages msgsep.
set_hl('MoreMsg', { fg = c.cyan }) -- more-prompt
set_hl('NonText', { fg = c.base00 }) -- '@' at the end of the window
set_hl(
'Normal',
{ fg = c.base0, bg = c.base03 },
{ transparent = config.transparent }
) -- Normal text
set_hl('NormalFloat', { fg = c.base0, bg = base04 }) -- Normal text in floating windows
set_hl('FloatBorder', { link = 'WinSeparator' }) -- Border of floating windows.
set_hl('FloatTitle', { fg = c.orange }) -- Title of float windows.
set_hl('NormalNC', { link = 'Normal' }) -- Normal text in non-current windows.
set_hl(
'Pmenu',
{ fg = c.base0, bg = base04 },
{ transparent = config.transparent }
) -- Popup menu: Normal item
set_hl('PmenuSel', { fg = c.base2 }) -- Popup menu: Selected item
set_hl('PmenuKind', { link = 'Pmenu' }) -- Popup menu: Normal item kind
set_hl('PmenuKindSel', { link = 'PmenuSel' }) -- Popup menu: Selected item kind
set_hl('PmenuExtra', { link = 'Pmenu' }) -- Popup menu: Normal item extra text
set_hl('PmenuExtraSel', { link = 'PmenuSel' }) -- Popup menu: Selected item extra text
set_hl('PmenuSbar', { bg = base04 }) -- Popup menu: Scrollbar
set_hl('PmenuThumb', { bg = c.base1 }) -- Popup menu: Thumb of the scrollbar
set_hl('Question', { fg = c.cyan, bg = c.base03 }) -- hit-enter prompt and yes/no questions.
set_hl('QuickFixLine', { fg = c.base0, bg = c.base03 }) -- Current quickfix item in the quickfix window
set_hl('Search', { bg = c.base02 }) -- Last search pattern highlighting
set_hl('SpecialKey', { fg = c.red }) -- Unprintable characters: Text displayed differently from what it really is.
set_hl('SpellBad', { fg = c.error, sp = c.error, underline = true }) -- Word that is not recognized by the spellchecker.
set_hl('SpellCap', { fg = c.hint, sp = c.hint, underline = true }) -- Word that should start with a capital
set_hl('SpellLocal', { fg = c.info, sp = c.info, underline = true }) -- Word that is recognized by the spellchecker as one that is used in another region
set_hl('SpellRare', { fg = c.warning, sp = c.warning, underline = true }) -- Word that is recognized by the spellchecker as one that is hardly ever used.
set_hl('StatusLine', { fg = c.base1, bg = base04 }) -- Status line of current window.
set_hl('StatusLineNC', { fg = c.base00, bg = base04 }) -- Status lines of not-current windows.
set_hl('TabLine', { bg = base04 }) -- Tab pages line, not active tab page label.
set_hl('TabLineFill', { fg = c.base0, bg = base04 }) -- Tab pages line, where there are no labels.
set_hl('TabLineSel', { fg = c.base2, bg = c.base03 }) -- Tab pages line, active tab page label.
set_hl('Title', { fg = c.orange }) -- Titles for output from ":set all", ":autocmd" etc.
set_hl('Visual', { bg = c.base02 }) -- Visual mode selection.
set_hl('VisualNOS', { link = 'Visual' }) -- Visual mode selection when vim is "Not Owning the Selection".
set_hl('WarningMsg', { fg = c.warning }) -- Warning messages.
set_hl('Whitespace', { fg = c.base01 }) -- "nbsp", "space", "tab", "multispace", "lead" and "trail" in 'listchars'.
set_hl('WildMenu', { bg = c.base02 }) -- Current match in 'wildmenu' completion.
set_hl('WinBar', { link = 'Pmenu' }) -- Window bar of current window.
set_hl('WinBarNC', { link = 'WinBar' }) -- Window bar of not-current windows.
end

View file

@ -1,8 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('GitSignsAdd', { fg = c.add }) -- Used for the text of 'add' signs
set_hl('GitSignsChange', { fg = c.change }) -- Used for the text of 'change' signs
set_hl('GitSignsDelete', { fg = c.delete }) -- Used for the text of 'delete' signs
end

View file

@ -1,9 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('HopNextKey', { fg = c.magenta })
set_hl('HopNextKey1', { fg = c.blue })
set_hl('HopNextKey2', { fg = '#1b6294' })
set_hl('HopUnmatched', { fg = c.base01 })
end

View file

@ -1,32 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local colortool = require('solarized.utils.colors')
local darken = colortool.darken
local lighten = colortool.lighten
local set_hl = utils.set_hl
if vim.o.background == 'dark' then
set_hl('IndentBlanklineChar', { fg = darken(c.green, 20) }) -- Highlight of indent character. Default: Whitespace
set_hl('IndentBlanklineSpaceChar', { link = 'IndentBlanklineChar' }) -- Highlight of space character. Default: Whitespace
set_hl('IndentBlanklineContextChar', { fg = c.green }) -- Highlight of indent character when base of current context. Default: Label
set_hl(
'IndentBlanklineContextSpaceChar',
{ link = 'IndentBlanklineContextChar' }
) -- Highlight of space characters one indent level of the current context. Default: Label
set_hl('IblIndent', { fg = darken(c.green, 20), nocombine = true })
set_hl('IblScope', { fg = c.green, nocombine = true })
else
set_hl('IndentBlanklineChar', { fg = lighten(c.blue, 20) }) -- Highlight of indent character. Default: Whitespace
set_hl('IndentBlanklineSpaceChar', { link = 'IndentBlanklineChar' }) -- Highlight of space character. Default: Whitespace
set_hl('IndentBlanklineContextChar', { fg = c.blue }) -- Highlight of indent character when base of current context. Default: Label
set_hl(
'IndentBlanklineContextSpaceChar',
{ link = 'IndentBlanklineContextChar' }
) -- Highlight of space characters one indent level of the current context. Default: Label
set_hl('IblIndent', { fg = lighten(c.blue, 20), nocombine = true })
set_hl('IblScope', { fg = c.blue, nocombine = true })
end
-- set_hl('IndentBlanklineSpaceCharBlankline', {}) -- Highlight of space character on blank lines. Default: Whitespace
-- set_hl('IndentBlanklineContextStart', {}) -- Highlight of the first line of the current context. Default: Label
end

View file

@ -1,16 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('LspReferenceText', { link = 'Visual' }) -- used for highlighting "text" references
set_hl('LspReferenceRead', { link = 'Visual' }) -- used for highlighting "read" references
set_hl('LspReferenceWrite', { link = 'Visual' }) -- used for highlighting "write" references
set_hl('LspInlayHint', { fg = c.base01 }) -- used for highlighting inlay hints
-- if you want to me to enable the highlight groups bellow, please send a screenshot for me to see how
-- they look like or how to config for me to test.
-- set_hl('LspCodelens') -- Used to color the virtual text of the codelens.
-- set_hl('LspCodeLensSeparator') -- Used to color the separator between two or more code lenses.
-- set_hl('LspSignatureActiveParameter') -- Used to highlight the active parameter in the signature help. See
end

View file

@ -1,55 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- Float window
set_hl('SagaNormal', { link = 'Pmenu' })
set_hl(
'TitleString',
{ fg = c.orange, bold = true, bg = c.base02 },
{ transparent = config.transparent }
)
-- Outline
set_hl('OutlineIndent', { fg = c.green })
set_hl('SagaWinbarModule', { link = '@namespace' })
set_hl('SagaWinbarInterface', { link = 'Type' })
set_hl('SagaWinbarConstructor', { link = '@constructor' })
set_hl('SagaWinbarStruct', { link = 'Structure' })
set_hl('SagaWinbarObject', { link = '@field' })
set_hl('SagaWinbarUnit', { link = 'Number' })
set_hl('SagaWinbarFile', { fg = c.base0 })
set_hl('SagaWinbarSnippet', { link = 'Keyword' })
set_hl('SagaWinbarText', { fg = c.base1 })
set_hl('SagaWinbarTypeAlias', { link = 'Type' })
set_hl('SagaWinbarEvent', { fg = c.base2 })
set_hl('SagaWinbarParameter', { link = '@parameter' })
set_hl('SagaWinbarKey', { link = '@field' })
set_hl('SagaWinbarValue', { fg = c.base2 })
set_hl('SagaWinbarMacro', { link = 'Macro' })
set_hl('SagaWinbarNumber', { link = 'Number' })
set_hl('SagaWinbarConstant', { link = 'Constant' })
set_hl('SagaWinbarFunction', { link = 'Function' })
set_hl('SagaWinbarEnum', { link = 'Type' })
set_hl('SagaWinbarField', { link = '@field' })
set_hl('SagaWinbarProperty', { link = '@field' })
set_hl('SagaWinbarMethod', { link = 'Function' })
set_hl('SagaWinbarClass', { link = 'Type' })
set_hl('SagaWinbarFolder', { link = 'Directory' })
set_hl('SagaWinbarPackage', { link = 'Directory' })
set_hl('SagaWinbarStaticMethod', { link = 'Function' })
set_hl('SagaWinbarTypeParameter', { link = 'Type' })
set_hl('SagaWinbarEnumMember', { link = 'Constant' })
set_hl('SagaWinbarOperator', { link = 'Operator' })
set_hl('SagaWinbarNull', { link = 'Constant' })
set_hl('SagaWinbarNamespace', { link = '@namespace' })
set_hl('SagaWinbarArray', { link = 'Delimiter' })
set_hl('SagaWinbarBoolean', { link = 'Boolean' })
set_hl('SagaWinbarString', { link = 'String' })
set_hl('SagaWinbarVariable', { link = 'Identifier' })
set_hl('SagaWinbarFilename', { fg = c.base0 })
set_hl('SagaWinbarFolderName', { fg = c.base0 })
set_hl('SagaWinbarFileIcon', { link = 'Directory' })
set_hl('SagaWinbarSep', { link = 'Keyword' })
end

View file

@ -1,38 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- MiniCursor
set_hl('MiniCursorword', { bg = c.base02 })
-- MiniStatusLine
set_hl('MiniStatuslineModeNormal', { fg = c.base03, bg = c.blue })
set_hl('MiniStatuslineModeInsert', { fg = c.base03, bg = c.green })
set_hl('MiniStatuslineModeVisual', { fg = c.base03, bg = c.magenta })
set_hl('MiniStatuslineModeReplace', { fg = c.base03, bg = c.red })
set_hl('MiniStatuslineModeCommand', { fg = c.base03, bg = c.orange })
set_hl('MinistatusLineFileName', { fg = c.base0, bg = c.base02 })
set_hl('MiniStatuslineDevinfo', { fg = c.base03, bg = c.base1 })
set_hl('MiniStatuslineFileinfo', { fg = c.base03, bg = c.base1 })
set_hl('MiniStatuslineInactive', { fg = c.base01, bg = c.base03 })
-- MiniTabLine
set_hl('MiniTablineCurrent', { fg = c.base2, bg = c.base1 })
set_hl('MiniTablineVisible', { fg = c.base2, bg = c.base03 })
set_hl('MiniTablineHidden', { fg = c.base01, bg = c.base03 })
set_hl('MiniTablineModifiedCurrent', { link = 'MiniTabLineCurrent' })
set_hl('MiniTablineModifiedVisible', { link = 'MiniTablineVisible' })
set_hl('MiniTablineModifiedHidden', { link = 'MiniTablineHidden' })
set_hl('MiniTablineFill', { link = 'NormalFloat' })
set_hl('MiniTablineTabpagesection', { link = 'NormalFloat' })
-- MiniStarter
set_hl('MiniStarterCurrent', { link = 'CursorLine' })
set_hl('MiniStarterHeader', { fg = c.base00 })
set_hl('MiniStarterFooter', { fg = c.base00 })
set_hl('MiniStarterItem', { fg = c.base0 })
set_hl('MiniStarterItemBullet', { fg = c.blue })
set_hl('MiniStarterItemPrefix', { fg = c.blue })
set_hl('MiniStarterSection', { link = 'Title' })
set_hl('MiniStarterQuery', { fg = c.magenta, bg = 'NONE', bold = true })
end

View file

@ -1,33 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('NavicIconsFile', { fg = c.base00 })
set_hl('NavicIconsModule', { link = '@namespace' })
set_hl('NavicIconsNamespace', { link = '@namespace' })
set_hl('NavicIconsPackage', { link = 'Directory' })
set_hl('NavicIconsClass', { link = 'Type' })
set_hl('NavicIconsMethod', { link = 'Type' })
set_hl('NavicIconsProperty', { link = '@field' })
set_hl('NavicIconsField', { link = '@field' })
set_hl('NavicIconsConstructor', { link = '@constructor' })
set_hl('NavicIconsEnum', { link = 'Type' })
set_hl('NavicIconsInterface', { link = 'Type' })
set_hl('NavicIconsFunction', { link = 'Function' })
set_hl('NavicIconsVariable', { link = 'Identifier' })
set_hl('NavicIconsConstant', { link = 'Constant' })
set_hl('NavicIconsString', { link = 'String' })
set_hl('NavicIconsNumber', { link = 'Number' })
set_hl('NavicIconsBoolean', { link = 'Boolean' })
set_hl('NavicIconsArray', { link = 'Delimiter' })
set_hl('NavicIconsObject', { link = '@field' })
set_hl('NavicIconsKey', { link = '@field' })
set_hl('NavicIconsNull', { link = 'Constant' })
set_hl('NavicIconsEnumMember', { link = 'Constant' })
set_hl('NavicIconsStruct', { link = 'Structure' })
set_hl('NavicIconsEvent', { fg = c.base2 })
set_hl('NavicIconsOperator', { link = 'Operator' })
set_hl('NavicIconsTypeParameter', { link = '@parameter' })
set_hl('NavicText', { fg = c.base1 })
set_hl('NavicSeparator', { link = 'Keyword' })
end

View file

@ -1,27 +0,0 @@
return function(c)
local blend = require('solarized.utils.colors').blend
local utils = require('solarized.utils')
local set_hl = utils.set_hl
local alpha = 0.05
set_hl('NeogitCursorLine', { link = 'CursorLine' })
set_hl('NeogitBranch', { fg = c.magenta })
set_hl('NeogitRemote', { fg = c.violet })
set_hl(
'NeogitHunkHeader',
{ fg = c.orange, bg = blend(c.orange, c.base03, alpha) }
)
set_hl('NeogitHunkHeaderHighlight', { link = 'Title' })
set_hl('NeogitDiffContextHighlight', { fg = c.base00, bg = c.base03 })
set_hl('NeogitDiffContext', { fg = c.base00, bg = c.base03 })
set_hl(
'NeogitDiffDeleteHighlight',
{ fg = c.red, bg = blend(c.red, c.base03, alpha) }
)
set_hl('NeogitDiffDelete', { fg = c.red })
set_hl(
'NeogitDiffAddHighlight',
{ fg = c.green, bg = blend(c.green, c.base03, alpha) }
)
set_hl('NeogitDiffAdd', { fg = c.green })
end

View file

@ -1,28 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local set_hl = utils.set_hl
set_hl('NeoTreeNormal', {
fg = c.base0,
}, { transparent = config.transparent })
set_hl('NeoTreeNormalNC', { link = 'NeoTreeNormal' })
set_hl('NeoTreeEndOfBuffer', { fg = c.base02 })
set_hl('NeoTreeRootName', { link = 'Directory' })
set_hl('NeoTreeFileName', { fg = c.base0 })
set_hl('NeoTreeFileNameOpened', { link = 'Directory' })
set_hl('NeoTreeFloatBorder', { link = 'WinSeparator' })
set_hl('NeoTreeFloatTitle', { link = 'Title' })
set_hl('NeoTreeGitAdded', { fg = c.add, bg = 'NONE' })
set_hl('NeoTreeGitConflict', { fg = c.change })
set_hl('NeoTreeGitDeleted', { fg = c.delete })
set_hl('NeoTreeGitIgnored', { fg = c.base01, italic = true })
set_hl('NeoTreeGitModified', { fg = c.change })
set_hl('NeoTreeGitUnstaged', { fg = c.change })
set_hl('NeoTreeGitUntracked', { fg = c.change })
set_hl('NeoTreeGitStaged', { fg = c.add })
set_hl('NeoTreeIndentMarker', { fg = c.base01 })
set_hl('NeoTreeDotfile', { fg = c.base01 })
set_hl('NeoTreeFileStats', { fg = c.base01 })
set_hl('NeoTreeTitleBar', { fg = darken(c.cyan, 50), bg = c.cyan })
end

View file

@ -1,9 +0,0 @@
return function(c)
local set_hl = require('solarized.utils').set_hl
set_hl('NoiceFormatProgressTodo', { fg = c.base01, reverse = true })
set_hl('NoiceFormatProgressDone', { fg = c.cyan, reverse = true })
set_hl('NoiceLspProgressSpinner', { fg = c.cyan })
set_hl('NoiceLspProgressClient', { fg = c.blue })
set_hl('NoiceLspProgressTitle', { link = 'Title' })
end

View file

@ -1,26 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('NotifyBackground', { bg = c.base03 })
set_hl('NotifyERRORBorder', { fg = c.error })
set_hl('NotifyWARNBorder', { fg = c.warn })
set_hl('NotifyINFOBorder', { fg = c.info })
set_hl('NotifyDEBUGBorder', { fg = c.magenta })
set_hl('NotifyTRACEBorder', { fg = c.violet })
set_hl('NotifyERRORIcon', { link = 'NotifyERRORBorder' })
set_hl('NotifyWARNIcon', { link = 'NotifyWARNBorder' })
set_hl('NotifyINFOIcon', { link = 'NotifyINFOBorder' })
set_hl('NotifyDEBUGIcon', { link = 'NotifyDEBUGBorder' })
set_hl('NotifyTRACEIcon', { link = 'NotifyTRACEBorder' })
set_hl('NotifyERRORTitle', { link = 'NotifyERRORBorder' })
set_hl('NotifyWARNTitle', { link = 'NotifyWARNBorder' })
set_hl('NotifyINFOTitle', { link = 'NotifyINFOBorder' })
set_hl('NotifyDEBUGTitle', { link = 'NotifyDEBUGTitle' })
set_hl('NotifyTRACETitle', { link = 'NotifyTRACEBorder' })
set_hl('NotifyERRORBody', { link = 'Normal' })
set_hl('NotifyWARNBody', { link = 'Normal' })
set_hl('NotifyINFOBody', { link = 'Normal' })
set_hl('NotifyDEBUGBody', { link = 'Normal' })
set_hl('NotifyTRACEBody', { link = 'Normal' })
end

View file

@ -1,33 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- Default highlight
set_hl('@lsp.type.class', { link = 'Type' }) -- Type
set_hl('@lsp.type.decorator', { link = 'Function' }) -- Function
set_hl('@lsp.type.enum', { link = 'Type' }) -- Type
set_hl('@lsp.type.enumMember', { link = 'Constant' }) -- Constant
set_hl('@lsp.type.function', { link = 'Function' }) -- Function
set_hl('@lsp.type.interface', { link = 'Type' }) -- Type
set_hl('@lsp.type.macro', { link = 'Keyword' }) -- Keyword
set_hl('@lsp.type.method', { link = 'Function' }) -- Function
set_hl('@lsp.type.namespace', { link = 'Constant' }) -- Constant
set_hl(
'@lsp.type.parameter',
{ fg = c.orange, italic = true },
{ styles = config.styles.parameters }
)
set_hl('@lsp.type.property', { fg = c.blue }) -- Property
set_hl('@lsp.type.struct', { link = 'Structure' }) -- Structure
set_hl('@lsp.type.type', { link = 'Type' }) -- Type
set_hl('@lsp.type.typeParameter', { link = 'Type' }) -- Type
set_hl('@lsp.type.variable', { link = 'Identifier' }) -- Identifier
-- Extra highlight
set_hl('@lsp.typemod.variable.defaultLibrary', { link = 'Constant' }) -- ex: "vim".api.nvim_set_hl
set_hl('@lsp.typemod.variable.readonly', { link = 'Constant' }) -- Constant variables ex: const hello = 'Hello World'
set_hl('@lsp.typemod.variable.global', { link = 'Constant' }) -- Global variables ex: HELLO = 'Hello World'
set_hl('@lsp.typemod.keyword.documentation', { link = 'Keyword' }) -- documentation comments
set_hl('@lsp.typemod.class.documentation', { link = 'Type' }) -- documentation comments
set_hl('@lsp.typemod.property.readonly', { link = 'Constant' }) -- Ex: System."out".println()
end

View file

@ -1,44 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl(
'Comment',
{ fg = c.base01, italic = true },
{ styles = config.styles.comments }
) -- any comment
set_hl('Constant', { fg = c.violet }, { styles = config.styles.constants }) -- any constant
set_hl('String', { fg = c.cyan }) -- a string constant: "this is a string"
set_hl('Character', { link = 'String' }) -- a character constant: 'c', '\n'
set_hl('Number', { fg = c.magenta }, { styles = config.styles.numbers }) -- a number constant: 234, 0xff
set_hl('Boolean', { fg = c.violet }) -- a boolean constant: TRUE, false
set_hl('Float', { link = 'Number' }) -- a floating point constant: 2.3e10
set_hl('Identifier', { fg = c.base0 }, { styles = config.styles.variables }) -- any variable name
set_hl('Function', { fg = c.blue }, { styles = config.styles.functions }) -- function name (also: methods for classes)
set_hl('Statement', { link = 'Keyword' }) -- any statement
set_hl('Conditional', { link = 'Keyword' }) -- if, then, else, endif, switch, etc.
set_hl('Repeat', { link = 'Keyword' }) -- for, do, while, etc.
set_hl('Label', { link = 'Keyword' }) -- case, default, etc.
set_hl('Operator', { link = 'Keyword' }) -- "sizeof", "+", "*", etc.
set_hl('Keyword', { fg = c.green }, { styles = config.styles.keywords }) -- any other keyword
set_hl('Exception', { link = 'Keyword' }) -- try, catch, throw
set_hl('PreProc', { link = 'Keyword' }) -- generic Preprocessor
set_hl('Include', { link = 'Keyword' }) -- preprocessor #include
set_hl('Define', { link = 'Keyword' }) -- preprocessor #define
set_hl('Macro', { link = 'Keyword' }) -- same as Define
set_hl('PreCondit', { link = 'Keyword' }) -- preprocessor #if, #else, #endif, etc.
set_hl('Type', { fg = c.yellow }, { styles = config.styles.types }) -- int, long, char, etc.
set_hl('StorageClass', { link = 'Keyword' }) -- static, register, volatile, etc.
set_hl('Structure', { fg = c.yellow }) -- struct, union, enum, etc.
set_hl('Typedef', { link = 'Keyword' }) -- A typedef
set_hl('Special', { fg = c.magenta }) -- special symbol
set_hl('SpecialChar', { fg = c.violet }) -- special character in a constant
set_hl('Tag', { link = 'Special' }) -- you can use CTRL-] on this
set_hl('Delimiter', { fg = c.orange }) -- character that needs attention
set_hl('SpecialComment', { link = 'Keyword' }) -- special things inside a comment
set_hl('Debug', { link = 'Keyword' }) -- debugging statements
set_hl('Underlined', { fg = c.violet, underline = true }) --text that stands out, HTML links
set_hl('Ignore') --left blank, hidden |hl-Ignore|
set_hl('Error', { fg = c.error }) --any erroneous construct
set_hl('Todo', { fg = c.violet }) --anything that needs extra attention; mostly the keywords TODO FIXME and XXX
end

View file

@ -1,45 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local base04 = darken(c.base03, 10)
local set_hl = utils.set_hl
set_hl('TelescopeSelection', { link = 'CursorLine' })
set_hl('TelescopeSelectionCaret', { fg = c.red })
set_hl('TelescopeMultiSelection', { link = 'Type' })
set_hl('TelescopeMultiIcon', { fg = c.cyan })
-- "Normal" in the floating windows created by telescope.
set_hl(
'TelescopeNormal',
{ fg = c.base0, bg = base04 },
{ transparent = config.transparent }
)
set_hl('TelescopePreviewNormal', { link = 'TelescopeNormal' })
set_hl('TelescopePromptNormal', { link = 'TelescopeNormal' })
set_hl('TelescopeResultsNormal', { link = 'TelescopeNormal' })
-- Border highlight groups.
-- Use TelescopeBorder to override the default.
-- Otherwise set them specifically
set_hl('TelescopeBorder', { link = 'WinSeparator' })
set_hl('TelescopePromptBorder', { link = 'TelescopeBorder' })
set_hl('TelescopeResultsBorder', { link = 'TelescopeBorder' })
set_hl('TelescopePreviewBorder', { link = 'TelescopeBorder' })
-- Title highlight groups.
-- Use TelescopeTitle to override the default.
-- Otherwise set them specifically
set_hl('TelescopeTitle', { fg = c.blue, reverse = true })
set_hl('TelescopePromptTitle', { link = 'TelescopeTitle' })
set_hl('TelescopeResultsTitle', { link = 'TelescopeTitle' })
set_hl('TelescopePreviewTitle', { link = 'TelescopeTitle' })
set_hl('TelescopePromptCounter', { link = 'NonText' })
-- Used for highlighting characters that you match.
set_hl('TelescopeMatching', { link = 'IncSearch' })
-- Used for the prompt prefix
set_hl('TelescopePromptPrefix', { fg = c.magenta })
end

View file

@ -1,50 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local colortool = require('solarized.utils.colors')
local set_hl = utils.set_hl
local colorFunc
local percentage = 80
if vim.o.background == 'light' then
colorFunc = colortool.lighten
else
colorFunc = colortool.darken
end
-- TODO: TODO
-- WARN: WARN
-- TEST: TEST
-- PERF: PERF
-- NOTE: NOTE
-- HACK: HACK
set_hl('TodoFgTODO', { fg = c.info })
set_hl('TodoFgWARN', { fg = c.warning })
set_hl('TodoFgTEST', { fg = c.violet })
set_hl('TodoFgPERF', { fg = c.magenta })
set_hl('TodoFgNOTE', { fg = c.hint })
set_hl('TodoFgHACK', { fg = c.cyan })
set_hl('TodoFgFIX', { fg = c.error })
set_hl('TodoSignTODO', { fg = c.info })
set_hl('TodoSignWARN', { fg = c.warning })
set_hl('TodoSignTEST', { fg = c.violet })
set_hl('TodoSignPERF', { fg = c.magenta })
set_hl('TodoSignNOTE', { fg = c.hint })
set_hl('TodoSignHACK', { fg = c.cyan })
set_hl('TodoSignFIX', { fg = c.error })
set_hl('TodoBgTODO', { fg = c.info, bg = colorFunc(c.info, percentage) })
set_hl(
'TodoBgWARN',
{ fg = c.warning, bg = colorFunc(c.warning, percentage) }
)
set_hl('TodoBgTEST', { fg = c.violet, bg = colorFunc(c.violet, percentage) })
set_hl(
'TodoBgPERF',
{ fg = c.magenta, bg = colorFunc(c.magenta, percentage) }
)
set_hl('TodoBgNOTE', { fg = c.hint, bg = colorFunc(c.hint, percentage) })
set_hl('TodoBgHACK', { fg = c.cyan, bg = colorFunc(c.cyan, percentage) })
set_hl('TodoBgFIX', { fg = c.error, bg = colorFunc(c.error, percentage) })
end

View file

@ -1,66 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local base04 = darken(c.base03, 10)
local set_hl = utils.set_hl
set_hl('NvimTreeSymlink', { link = 'Underlined' })
set_hl('NvimTreeSymlinkIcon', { link = 'Directory' })
-- set_hl('NvimTreeSymlinkFolderName') -- (Directory)
set_hl('NvimTreeFolderName', { fg = c.base0 }) -- (Directory)
set_hl('NvimTreeRootFolder', { link = 'Title' })
set_hl('NvimTreeFolderIcon', { link = 'Directory' })
-- set_hl('NvimTreeOpenedFolderIcon') -- (NvimTreeFolderIcon)
-- set_hl('NvimTreeClosedFolderIcon') -- (NvimTreeFolderIcon)
-- set_hl('NvimTreeFileIcon')
set_hl('NvimTreeEmptyFolderName', { fg = c.base0 }) -- (Directory)
-- set_hl('NvimTreeOpenedFolderName') -- (Directory)
set_hl('NvimTreeExecFile', { link = 'Function' })
set_hl('NvimTreeOpenedFile', { fg = c.orange, bold = true })
set_hl('NvimTreeModifiedFile', { fg = c.change })
set_hl('NvimTreeSpecialFile', { link = 'Special' })
-- set_hl('NvimTreeImageFile')
set_hl('NvimTreeIndentMarker', { fg = c.base01 })
-- set_hl('NvimTreeLspDiagnosticsError') -- (DiagnosticError)
-- set_hl('NvimTreeLspDiagnosticsWarning') -- (DiagnosticWarn)
set_hl('NvimTreeLspDiagnosticsInformation') -- (DiagnosticInfo)
set_hl('NvimTreeLspDiagnosticsHint') -- (DiagnosticHint)
set_hl('NvimTreeGitDirty', { fg = c.change })
set_hl('NvimTreeGitStaged', { fg = c.add })
set_hl('NvimTreeGitMerge', { fg = c.change })
set_hl('NvimTreeGitRenamed', { fg = c.add })
set_hl('NvimTreeGitNew', { fg = c.add })
set_hl('NvimTreeGitDeleted', { fg = c.delete })
-- set_hl('NvimTreeGitIgnored') -- (Comment)
-- set_hl('NvimTreeWindowPicker')
set_hl(
'NvimTreeNormal',
{ fg = c.base0, bg = base04 },
{ transparent = config.transparent }
)
set_hl('NvimTreeNormalFloat', { link = 'NvimTreeNormal' })
set_hl('NvimTreeEndOfBuffer', { fg = base04 }) -- (NonText)
-- set_hl('NvimTreeCursorLine') -- (CursorLine)
-- set_hl('NvimTreeCursorLineNr') -- (CursorLineNr)
-- set_hl('NvimTreeLineNr') -- (LineNr)
set_hl(
'NvimTreeWinSeparator',
{ fg = base04, bg = base04 },
{ transparent = config.transparent }
) -- (WinSeparator)
-- set_hl('NvimTreeCursorColumn') -- (CursorColumn)
--
-- There are also links for file highlight with git properties, linked to their
-- Git equivalent:
--
-- set_hl('NvimTreeFileDirty') -- (NvimTreeGitDirty)
-- set_hl('NvimTreeFileStaged') -- (NvimTreeGitStaged)
-- set_hl('NvimTreeFileMerge') -- (NvimTreeGitMerge)
-- set_hl('NvimTreeFileRenamed') -- (NvimTreeGitRenamed)
-- set_hl('NvimTreeFileNew') -- (NvimTreeGitNew)
-- set_hl('NvimTreeFileDeleted') -- (NvimTreeGitDeleted)
-- set_hl('NvimTreeFileIgnored') -- (NvimTreeGitIgnored)
-- set_hl('NvimTreeLiveFilterPrefix')
-- set_hl('NvimTreeLiveFilterValue')
-- set_hl('NvimTreeBookmark')
end

View file

@ -1,114 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
--[[ Highlight capture names as of nvim-treesitter commit `6806d7a` ]]
--
-- Identifiers
set_hl('@variable', { link = 'Identifier' }) -- various variable names
set_hl('@variable.builtin', { fg = c.violet, italic = true }) -- built-in variable names (e.g. `this`)
set_hl(
'@variable.parameter',
{ fg = c.orange, italic = true },
{ styles = config.styles.parameters }
) -- parameters of a function
set_hl('@variable.member', { fg = c.blue }) -- object and struct fields
set_hl('@constant', { link = 'Constant' }) -- constant identifiers
set_hl('@constant.builtin', { link = 'Constant' }) -- built-in constant values
set_hl('@constant.macro', { link = 'Constant' }) -- constants defined by the preprocessor
set_hl('@module', { fg = c.violet }) -- modules or namespaces
set_hl('@module.builtin', { fg = c.cyan }) -- built-in modules or namespaces
set_hl('@label', { link = 'Label' }) -- GOTO and other labels (e.g. `label:` in C), including heredoc labels
-- Literals
set_hl('@string', { link = 'String' }) -- string literals
set_hl('@string.documentation', { link = 'Comment' }) -- string documenting code (e.g. Python docstrings)
set_hl('@string.regexp', { fg = c.violet }) -- regular expressions
set_hl('@string.escape', { link = 'Keyword' }) -- escape sequences
set_hl('@string.special', { link = 'Constant' }) -- other special strings (e.g. dates)
set_hl('@string.special.symbol', { fg = c.violet }) -- symbols or atoms
set_hl('@string.special.url', { link = 'Underlined' }) -- URIs (e.g. hyperlinks)
set_hl('@string.special.path', { link = 'Underlined' }) -- filenames
set_hl('@character', { link = 'String' }) -- character literals
set_hl('@character.special', { link = 'Constant' }) -- special characters (e.g. wildcards)
set_hl('@character.printf', { fg = c.violet }) -- special characters (e.g. wildcards)
set_hl('@boolean', { link = 'Constant' }) -- boolean literals
set_hl('@number', { link = 'Number' }) -- numeric literals
set_hl('@number.float', { link = 'Number' }) -- floating-point number literals
-- Types
set_hl('@type', { link = 'Type' }) -- type or class definitions and annotations
set_hl('@type.builtin', { link = 'Type' }) -- built-in types
set_hl('@type.definition', { link = 'Type' }) -- identifiers in type definitions (e.g. `typedef <type> <identifier>` in C)
set_hl('@type.qualifier', { link = 'Keyword' }) -- type qualifiers (e.g. `const`)
set_hl('@attribute', { link = 'Function' }) -- attribute annotations (e.g. Python decorators)
set_hl('@property', { link = '@variable.member' }) -- the key in key/value pairs
-- Functions
set_hl('@function', { link = 'Function' }) -- function definitions
set_hl('@function.builtin', { link = 'Function' }) -- built-in functions
set_hl('@function.call', { link = 'Function' }) -- function calls
set_hl('@function.macro', { link = 'Function' }) -- preprocessor macros
set_hl('@function.method', { link = 'Function' }) -- method definitions
set_hl('@function.method.call', { link = 'Function' }) -- method calls
set_hl('@constructor', { fg = c.magenta }) -- constructor calls and definitions
set_hl('@operator', { link = 'Keyword' }) -- symbolic operators (e.g. `+` / `*`)
-- Keywords
set_hl('@keyword', { link = 'Keyword' }) -- keywords not fitting into specific categories
set_hl('@keyword.coroutine', { link = 'Keyword' }) -- keywords related to coroutines (e.g. `go` in Go, `async/await` in Python)
set_hl('@keyword.function', { link = 'Keyword' }) -- keywords that define a function (e.g. `func` in Go, `def` in Python)
set_hl('@keyword.operator', { link = 'Keyword' }) -- operators that are English words (e.g. `and` / `or`)
set_hl('@keyword.import', { link = 'Keyword' }) -- keywords for including modules (e.g. `import` / `from` in Python)
set_hl('@keyword.storage', { link = 'Keyword' }) -- modifiers that affect storage in memory or life-time
set_hl('@keyword.repeat', { link = 'Keyword' }) -- keywords related to loops (e.g. `for` / `while`)
set_hl('@keyword.return', { link = 'Keyword' }) -- keywords like `return` and `yield`
set_hl('@keyword.debug', { link = 'Keyword' }) -- keywords related to debugging
set_hl('@keyword.exception', { link = 'Keyword' }) -- keywords related to exceptions (e.g. `throw` / `catch`)
set_hl('@keyword.conditional', { link = 'Keyword' }) -- keywords related to conditionals (e.g. `if` / `else`)
set_hl('@keyword.conditional.ternary', { link = 'Keyword' }) -- ternary operator (e.g. `?` / `:`)
set_hl('@keyword.directive', { link = 'Keyword' }) -- various preprocessor directives & shebangs
set_hl('@keyword.directive.define', { link = 'Keyword' }) -- preprocessor definition directives
-- Punctuations
set_hl('@punctuation.delimiter', { link = 'Delimiter' }) -- delimiters (e.g. `;` / `.` / `,`)
set_hl('@punctuation.bracket', { link = 'Delimiter' }) -- brackets (e.g. `()` / `{}` / `[]`)
set_hl('@punctuation.special', { link = 'Delimiter' }) -- special symbols (e.g. `{}` in string interpolation)
-- Comments
set_hl('@comment', { link = 'Comment' }) -- line and block comments
set_hl('@comment.documentation', { link = 'Comment' }) -- comments documenting code
set_hl('@comment.error', { fg = c.error }) -- error-type comments (e.g. `ERROR`, `FIXME`, `DEPRECATED:`)
set_hl('@comment.warning', { fg = c.warning }) -- warning-type comments (e.g. `WARNING:`, `FIX:`, `HACK:`)
set_hl('@comment.todo', { link = 'Todo' }) -- todo-type comments (e.g. `TODO:`, `WIP:`, `FIXME:`)
set_hl('@comment.note', { fg = c.info }) -- note-type comments (e.g. `NOTE:`, `INFO:`, `XXX`)
-- Markup
set_hl('@markup.strong', { fg = c.yellow }) -- bold text
set_hl('@markup.italic', { fg = c.yellow, italic = true }) -- italic text
set_hl('@markup.strikethrough', { fg = c.base01, strikethrough = true }) -- struck-through text
set_hl('@markup.underline', { link = 'Underlined' }) -- underlined text (only for literal underline markup!)
set_hl('@markup.heading', { link = 'Title' }) -- headings, titles (including markers)
set_hl('@markup.quote', { fg = c.cyan }) -- block quotes
set_hl('@markup.math', { link = 'Number' }) -- math environments (e.g. `$ ... $` in LaTeX)
set_hl('@markup.environment', { fg = c.base0 }) -- environments (e.g. in LaTeX)
set_hl('@markup.link', { link = 'Underlined' }) -- text references, footnotes, citations, etc.
set_hl('@markup.link.label', { link = 'Constant' }) -- link, reference descriptions
set_hl('@markup.link.url', { link = 'Underlined' }) -- URL-style links
set_hl('@markup.raw', { fg = c.base0 }) -- literal or verbatim text (e.g., inline code)
set_hl('@markup.raw.block', { fg = c.base0 }) -- literal or verbatim text as a stand-alone block (use priority 90 for blocks with injections)
set_hl('@markup.list', { link = 'Delimiter' }) -- list markers
set_hl('@markup.list.checked', { link = 'Delimiter' }) -- checked todo-style list markers
set_hl('@markup.list.unchecked', { link = 'Delimiter' }) -- unchecked todo-style list markers
-- Diffs
set_hl('@diff.plus', { fg = c.add }) -- added text (for diff files)
set_hl('@diff.minus', { fg = c.delete }) -- deleted text (for diff files)
set_hl('@diff.delta', { fg = c.change }) -- changed text (for diff files)
-- Tags
set_hl('@tag', { fg = c.green }) -- XML-style tag names (and similar)
set_hl('@tag.attribute', { link = '@variable.member' }) -- XML-style tag attributes
set_hl('@tag.delimiter', { link = 'Delimiter' }) -- XML-style tag delimiters
end

View file

@ -1,19 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local base04 = darken(c.base03, 10)
local set_hl = utils.set_hl
set_hl('WhichKey', { fg = c.base0 }) -- the key
set_hl(
'WhichKeyNormal',
{ fg = c.base0, bg = base04 },
{ transparent = config.transparent }
)
set_hl('WhichKeyGroup', { fg = c.blue }) -- a group
set_hl('WhichKeySeparator', { fg = c.magenta }) -- the separator between the key and its label
set_hl('WhichKeyDesc', { fg = c.base2 }) -- the label of the key
-- set_hl('WhichKeyFloat') -- Normal in the popup window
-- set_hl('WhichKeyBorder', { link = 'WinSeparator' })
-- set_hl('WhichKeyValue') -- used by plugins that provide values
end

23
lua/solarized/utils.lua Normal file
View file

@ -0,0 +1,23 @@
local function to_hex(decimal)
if type(decimal) ~= 'number' then
return decimal
end
local hex = string.format('#%06x', decimal)
return hex:upper()
end
local function nvim_get_hl(name)
local output = vim.api.nvim_get_hl(0, { name = name, link = false })
local t = {}
for key, value in pairs(output) do
t[key] = to_hex(value)
end
return t
end
return {
nvim_get_hl = nvim_get_hl,
}

View file

@ -1,88 +0,0 @@
local M = {}
--- Convert a hexadecimal color code to RGB color values
---
--- @param hex string The hexadecimal color code (e.g., "#RRGGBB" or "RRGGBB")
--- @return number red The red component of the RGB color (0-255)
--- @return number green The green component of the RGB color (0-255)
--- @return number blue The blue component of the RGB color (0-255)
function M.hex_to_rgb(hex)
local red = tonumber(hex:sub(2, 3), 16)
local green = tonumber(hex:sub(4, 5), 16)
local blue = tonumber(hex:sub(6, 7), 16)
return red, green, blue
end
--- Convert rgb to hex
---
--- @param red number
--- @param green number
--- @param blue number
--- @return string color
function M.rgb_to_hex(red, green, blue)
return string.format('#%02x%02x%02x', red, green, blue)
end
--- Darken a color by a given distance
---
--- @param color string The color to be darkened in any valid color format
--- @param percentage number The distance by which the color should be darkened (between 1 and 10)
--- @return string color The resulting darkened color in the same format as the input color
function M.darken(color, percentage)
local red, green, blue = M.hex_to_rgb(color)
local i = 1
local result = {
red = red * (1 - (percentage / 100) * i),
green = green * (1 - (percentage / 100) * i),
blue = blue * (1 - (percentage / 100) * i),
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
--- Lighten a color by a given percentage
---
--- @param color string The color to be lightened in any valid color format
--- @param percentage number The percentage by which the color should be lightened (between 1 and 10)
--- @return string color The resulting lightened color in the same format as the input color
function M.lighten(color, percentage)
local red, green, blue = M.hex_to_rgb(color)
local i = 1
local result = {
red = red + (255 - red) * i * (percentage / 100),
green = green + (255 - green) * i * (percentage / 100),
blue = blue + (255 - blue) * i * (percentage / 100),
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
--- Blend two colors with a given alpha value
---
--- @param hex_fg string The foreground color in hexadecimal format (e.g., "#RRGGBB")
--- @param hex_bg string The background color in hexadecimal format (e.g., "#RRGGBB")
--- @param alpha number The alpha value between 0 and 1, indicating the blending ratio
--- @return string color The resulting blended color in hexadecimal format
function M.blend(hex_fg, hex_bg, alpha)
local red_bg, green_bg, blue_bg = M.hex_to_rgb(hex_bg)
local red_fg, green_fg, blue_fg = M.hex_to_rgb(hex_fg)
local min = math.min
local max = math.max
local floor = math.floor
local function blend_channel(fg, bg)
local ret = alpha * fg + ((1 - alpha) * bg)
return floor(min(max(0, ret), 255) + 0.5)
end
return M.rgb_to_hex(
blend_channel(red_fg, red_bg),
blend_channel(green_fg, green_bg),
blend_channel(blue_fg, blue_bg)
)
end
return M

View file

@ -1,49 +0,0 @@
local M = {}
--- Sets a highlight group
--- @param name string
--- @param val? table
--- @param opts? table The opts object..
--- - opts.transparent: (boolean) Specifies whether transparency is enabled.
--- - opts.styles: (table) A table of custom styles for various elements.
---@return nil
function M.set_hl(name, val, opts)
local default_val = { fg = 'NONE', bg = 'NONE' }
val = val or {}
if not val.link then val = vim.tbl_extend('force', default_val, val) end
if opts then
if opts.styles then val = vim.tbl_extend('force', val, opts.styles) end
if opts.transparent then val.bg = 'NONE' end
end
vim.api.nvim_set_hl(0, name, val)
end
--- get highlight group
--- @param highlight_name string
--- @return table highlight
function M.get_hl(highlight_name)
local highlight =
vim.api.nvim_get_hl(0, { name = highlight_name, link = true })
if highlight.link then return M.get_hl(highlight.link) end
return highlight
end
--- @param opts table The user-specified custom configuration
--- - fnc (function): callback type configuration
--- - tbl (function): table type configuration
--- @param config (table|function): config to be used
function M.on_config(opts, config)
if type(config) == 'table' and not vim.tbl_isempty(config) then
opts.tbl()
elseif type(config) == 'function' then
opts.fnc()
end
end
return M

View file

@ -1,7 +0,0 @@
local M = {}
function M.to_hex(decimal)
return string.format('#%06x', decimal)
end
return M

View file

@ -1,8 +1,5 @@
vim.api.nvim_create_user_command('Solarized', function(args)
require('solarized.command').load(
args.fargs[1],
vim.list_slice(args.fargs, 2)
)
require('solarized.command').load(args.fargs[1], vim.list_slice(args.fargs, 2))
end, {
range = true,
nargs = '+',

27
test.py
View file

@ -1,27 +0,0 @@
#!/usr/bin/python3
import subprocess
import sys
def run_commands(commands):
for command in commands:
process = subprocess.Popen(command, shell=True)
process.wait()
if __name__ == '__main__':
install_dependencies = False
if len(sys.argv) > 1 and sys.argv[1] == '--install':
install_dependencies = True
commands = []
if install_dependencies:
commands.append('cargo install stylua')
commands.append('sudo luarocks install luacheck')
commands.append('sudo luarocks install vusted')
commands.append('stylua . -f ./stylua.toml')
commands.append('vusted ./tests')
run_commands(commands)

View file

@ -1,19 +0,0 @@
describe('Autocmd', function()
test('Solarized Highlights is being created', function()
vim.cmd.colorscheme('solarized')
local todo = {
'TODO',
'WARN',
'TEST',
'PERF',
'NOTE',
'HACK',
'FIX',
}
for _, name in pairs(todo) do
local output = vim.api.nvim_get_hl(0, { name = 'SolarizedToken' .. name })
assert.is_true(type(output.fg) == 'number')
end
end)
end)

View file

@ -1,47 +0,0 @@
local colorhelper = require('solarized.utils.colors')
local solarized_palette = require('solarized.palette')
describe('Color Conversions', function()
test('Convert hex to RGB', function()
local colors = solarized_palette.get_colors()
local red, green, blue = colorhelper.hex_to_rgb(colors.yellow)
local expect = { red = 181, green = 137, blue = 0 }
assert.are.same(expect.red, red)
assert.are.same(expect.green, green)
assert.are.same(expect.blue, blue)
end)
test('Convert RGB to hex', function()
local colors = solarized_palette.get_colors()
local yellow = { red = 181, green = 137, blue = 0 }
local output = colorhelper.rgb_to_hex(yellow.red, yellow.green, yellow.blue)
local expect = colors.yellow
assert.equals(expect, string.lower(output))
end)
test('Darken the color by percentage', function()
local colors = solarized_palette.get_colors()
local output = colorhelper.darken(colors.green, 100)
local expect = '#000000'
assert.equals(expect, output)
end)
test('Lighten the color by percentage', function()
local colors = solarized_palette.get_colors()
local output = colorhelper.lighten(colors.green, 100)
local expect = '#ffffff'
assert.equals(expect, output)
end)
test('Blend colors', function()
local blend = require('solarized.utils.colors').blend
local alpha = 0.15
local expect = '#27383f'
local output = blend('#73daca', '#1a1b26', alpha)
assert.equals(output, expect)
end)
end)

View file

@ -1,34 +0,0 @@
describe('Configuration', function()
local default_config = require('solarized.config').default_config()
test('Default configuration', function()
local expect = 'table'
assert.equals(expect, type(default_config))
end)
test('Unique configuration table instances', function()
local config1 = require('solarized.config').default_config()
local config2 = require('solarized.config').default_config()
assert.are_not.equals(config1, config2)
end)
test('Extend default configuration', function()
local user_config = {
transparent = true,
styles = {},
}
local config = vim.tbl_deep_extend('force', default_config, user_config)
local expect = 'table'
local expect2 = true
assert.equals(expect, type(config.styles.comments))
assert.equals(expect, type(config.styles.functions))
assert.equals(expect, type(config.styles.variables))
assert.equals(expect, type(config.styles.numbers))
assert.equals(expect, type(config.colors))
assert.equals(expect, type(config.highlights))
assert.equals(expect2, config.transparent)
end)
end)

View file

@ -1,30 +0,0 @@
local utils = require('solarized.utils.test')
local to_hex = utils.to_hex
describe('Initialization', function()
setup(function()
vim.o.background = 'light'
vim.cmd.colorscheme('solarized')
end)
test('Loads without encountering any errors', function()
assert.equal('solarized', vim.g.colors_name)
assert.is_true(vim.o.termguicolors)
end)
test('Background is set to light', function()
local output = vim.api.nvim_get_hl(0, { name = 'Normal' })
local expect = '#fdf6e3'
assert.equals(expect, to_hex(output.bg))
end)
test('Selenized is being loaded', function()
require('solarized').setup({ palette = 'selenized' })
vim.cmd.colorscheme('solarized')
local output = vim.api.nvim_get_hl(0, { name = 'Normal' })
local expect = '#fbf3db'
assert.equals(expect, to_hex(output.bg))
end)
end)

View file

@ -1,39 +0,0 @@
local solarized_palette = require('solarized.palette')
describe('Palette', function()
test('Extend solarized color palette', function()
local default_colors = solarized_palette.get_colors()
local custom_colors = {
blue2 = '#c7e8f3',
purple = '#cf9aca',
magenta2 = '#8e4162',
}
local output =
solarized_palette.extend_colors(default_colors, custom_colors)
local expect = vim.deepcopy(default_colors)
expect.blue2 = custom_colors.blue2
expect.purple = custom_colors.purple
expect.magenta2 = custom_colors.magenta2
assert.are.same(expect, output)
end)
test(
'Correct any invalid colors when extending the solarized palette',
function()
local default_colors = solarized_palette.get_colors()
local custom_colors = {
white = '#aaaaaaa',
pink = '#cf9',
purple = '#8e4',
}
local output =
solarized_palette.extend_colors(default_colors, custom_colors)
local expect = vim.deepcopy(default_colors)
expect.pink = '#cf9cf9'
expect.purple = '#8e48e4'
assert.are.same(expect, output)
end
)
end)

View file

@ -1,85 +0,0 @@
local solarized_palette = require('solarized.palette')
local utils = require('solarized.utils.test')
local to_hex = utils.to_hex
describe('Setup', function()
setup(function()
local solarized = require('solarized')
solarized.setup({
theme = 'neo',
colors = function(c, helper)
return {
fg = '#c7e8f3',
bg = '#000',
yellow2 = helper.darken(c.yellow, 20),
}
end,
styles = {
comments = { italic = false, bold = true, underline = true },
functions = { italic = true },
},
highlights = function(c)
return {
Normal = { fg = c.fg, bg = c.bg },
Function = { italic = false },
Type = { fg = c.yellow2 },
['@function.builtin'] = { link = 'Special' },
}
end,
})
vim.cmd.colorscheme('solarized')
end)
test('Customizing Highlight Groups', function()
local colors = solarized_palette.get_colors()
local output1 = vim.api.nvim_get_hl(0, { name = 'Normal' })
local output2 = vim.api.nvim_get_hl(0, { name = 'Function' })
assert.equals('#c7e8f3', to_hex(output1.fg))
assert.equals('#000000', to_hex(output1.bg))
assert.are_not.same(colors.yellow, to_hex(output2.fg))
end)
test('Changing Comment Style', function()
local output = vim.api.nvim_get_hl(0, { name = 'Comment' })
assert.is_true(output.bold)
assert.is_true(output.underline)
assert.is_nil(output.italic)
end)
test('Changing Function Style', function()
local output = vim.api.nvim_get_hl(0, { name = 'Function' })
assert.is_true(output.cterm.italic)
end)
test(
'Customizable Highlight Groups Without Losing Previous Configuration',
function()
local output = vim.api.nvim_get_hl(0, { name = 'Function' })
local default_colors = solarized_palette.get_colors()
assert.is_nil(output.italic)
assert.equals(default_colors.blue, to_hex(output.fg))
end
)
test('Ability to Change the Default Theme', function()
local colors = solarized_palette.get_colors()
local output = vim.api.nvim_get_hl(0, { name = 'Directory' })
assert.equals(colors.orange, to_hex(output.fg))
end)
test(
'Function.builtin in linked to special, but doesnt have guifg',
function()
local output = vim.api.nvim_get_hl(0, { name = '@function.builtin' })
local expected = { link = 'Special' }
assert.are.same(expected, output)
end
)
end)