diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1b23ae6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +sample +vscode +build diff --git a/.luarc.json b/.luarc.json index 2620481..7b199b1 100644 --- a/.luarc.json +++ b/.luarc.json @@ -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" + ] } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c7f18c9..f9869d5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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) diff --git a/colors/solarized.lua b/colors/solarized.lua index dee11fc..f46a1ec 100644 --- a/colors/solarized.lua +++ b/colors/solarized.lua @@ -1 +1,5 @@ -require('solarized.config').load() +-- Solarized colorscheme +-- Repo: maxmx03/solarized.nvim +-- Maintainer: Milianor github.com/maxmx03 +-- License: MIT License +require('solarized').load() diff --git a/lua/barbecue/theme/solarized.lua b/lua/barbecue/theme/solarized.lua index 8c5211c..35038ec 100644 --- a/lua/barbecue/theme/solarized.lua +++ b/lua/barbecue/theme/solarized.lua @@ -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 diff --git a/lua/lualine/themes/selenized.lua b/lua/lualine/themes/selenized.lua new file mode 100644 index 0000000..831c89d --- /dev/null +++ b/lua/lualine/themes/selenized.lua @@ -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 diff --git a/lua/lualine/themes/solarized.lua b/lua/lualine/themes/solarized.lua index c44a0d7..8102a55 100644 --- a/lua/lualine/themes/solarized.lua +++ b/lua/lualine/themes/solarized.lua @@ -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 diff --git a/lua/solarized/autocmd.lua b/lua/solarized/autocmd.lua deleted file mode 100644 index d478a12..0000000 --- a/lua/solarized/autocmd.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/color.lua b/lua/solarized/color.lua new file mode 100644 index 0000000..a4d469f --- /dev/null +++ b/lua/solarized/color.lua @@ -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 diff --git a/lua/solarized/command.lua b/lua/solarized/command.lua index 30fefc2..a190e8f 100644 --- a/lua/solarized/command.lua +++ b/lua/solarized/command.lua @@ -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() diff --git a/lua/solarized/config.lua b/lua/solarized/config.lua index 23d83ad..a2c00e5 100644 --- a/lua/solarized/config.lua +++ b/lua/solarized/config.lua @@ -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, + }, +} diff --git a/lua/solarized/highlights.lua b/lua/solarized/highlights.lua deleted file mode 100644 index 1d3859d..0000000 --- a/lua/solarized/highlights.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/highlights/init.lua b/lua/solarized/highlights/init.lua new file mode 100644 index 0000000..c7188ab --- /dev/null +++ b/lua/solarized/highlights/init.lua @@ -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 diff --git a/lua/solarized/highlights/solarized-light.lua b/lua/solarized/highlights/solarized-light.lua new file mode 100644 index 0000000..2d89470 --- /dev/null +++ b/lua/solarized/highlights/solarized-light.lua @@ -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 diff --git a/lua/solarized/init.lua b/lua/solarized/init.lua index 9bc3ac9..1335534 100644 --- a/lua/solarized/init.lua +++ b/lua/solarized/init.lua @@ -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 diff --git a/lua/solarized/palette.lua b/lua/solarized/palette.lua deleted file mode 100644 index 19a007b..0000000 --- a/lua/solarized/palette.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/palette/init.lua b/lua/solarized/palette/init.lua new file mode 100644 index 0000000..5ec09a7 --- /dev/null +++ b/lua/solarized/palette/init.lua @@ -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 diff --git a/lua/solarized/palette/solarized-light.lua b/lua/solarized/palette/solarized-light.lua new file mode 100644 index 0000000..58413ce --- /dev/null +++ b/lua/solarized/palette/solarized-light.lua @@ -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 diff --git a/lua/solarized/themes/default/bufferline.lua b/lua/solarized/themes/default/bufferline.lua deleted file mode 100644 index 085d98d..0000000 --- a/lua/solarized/themes/default/bufferline.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/cmp.lua b/lua/solarized/themes/default/cmp.lua deleted file mode 100644 index 4279601..0000000 --- a/lua/solarized/themes/default/cmp.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/dashboard.lua b/lua/solarized/themes/default/dashboard.lua deleted file mode 100644 index ff802c0..0000000 --- a/lua/solarized/themes/default/dashboard.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/diagnostic.lua b/lua/solarized/themes/default/diagnostic.lua deleted file mode 100644 index 8edbf6e..0000000 --- a/lua/solarized/themes/default/diagnostic.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/editor.lua b/lua/solarized/themes/default/editor.lua deleted file mode 100644 index 0d64bda..0000000 --- a/lua/solarized/themes/default/editor.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/gitsign.lua b/lua/solarized/themes/default/gitsign.lua deleted file mode 100644 index 879fc71..0000000 --- a/lua/solarized/themes/default/gitsign.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/hop.lua b/lua/solarized/themes/default/hop.lua deleted file mode 100644 index b99ba00..0000000 --- a/lua/solarized/themes/default/hop.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/indentblankline.lua b/lua/solarized/themes/default/indentblankline.lua deleted file mode 100644 index 814a4af..0000000 --- a/lua/solarized/themes/default/indentblankline.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/lsp.lua b/lua/solarized/themes/default/lsp.lua deleted file mode 100644 index 42753e1..0000000 --- a/lua/solarized/themes/default/lsp.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/lspsaga.lua b/lua/solarized/themes/default/lspsaga.lua deleted file mode 100644 index 227fb3a..0000000 --- a/lua/solarized/themes/default/lspsaga.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/mini.lua b/lua/solarized/themes/default/mini.lua deleted file mode 100644 index 6517866..0000000 --- a/lua/solarized/themes/default/mini.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/navic.lua b/lua/solarized/themes/default/navic.lua deleted file mode 100644 index d4081cb..0000000 --- a/lua/solarized/themes/default/navic.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/neogit.lua b/lua/solarized/themes/default/neogit.lua deleted file mode 100644 index fd368a9..0000000 --- a/lua/solarized/themes/default/neogit.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/neotree.lua b/lua/solarized/themes/default/neotree.lua deleted file mode 100644 index 828fe68..0000000 --- a/lua/solarized/themes/default/neotree.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/noice.lua b/lua/solarized/themes/default/noice.lua deleted file mode 100644 index fc42470..0000000 --- a/lua/solarized/themes/default/noice.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/notify.lua b/lua/solarized/themes/default/notify.lua deleted file mode 100644 index c5828f7..0000000 --- a/lua/solarized/themes/default/notify.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/semantic.lua b/lua/solarized/themes/default/semantic.lua deleted file mode 100644 index 321d3db..0000000 --- a/lua/solarized/themes/default/semantic.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/syntax.lua b/lua/solarized/themes/default/syntax.lua deleted file mode 100644 index 76af766..0000000 --- a/lua/solarized/themes/default/syntax.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/telescope.lua b/lua/solarized/themes/default/telescope.lua deleted file mode 100644 index 3a0c407..0000000 --- a/lua/solarized/themes/default/telescope.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/todo.lua b/lua/solarized/themes/default/todo.lua deleted file mode 100644 index 75b0785..0000000 --- a/lua/solarized/themes/default/todo.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/tree.lua b/lua/solarized/themes/default/tree.lua deleted file mode 100644 index 3db5124..0000000 --- a/lua/solarized/themes/default/tree.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/default/treesitter.lua b/lua/solarized/themes/default/treesitter.lua deleted file mode 100644 index c3286f4..0000000 --- a/lua/solarized/themes/default/treesitter.lua +++ /dev/null @@ -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 ` 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 diff --git a/lua/solarized/themes/default/whichkey.lua b/lua/solarized/themes/default/whichkey.lua deleted file mode 100644 index 89394bf..0000000 --- a/lua/solarized/themes/default/whichkey.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/bufferline.lua b/lua/solarized/themes/neo/bufferline.lua deleted file mode 100644 index 085d98d..0000000 --- a/lua/solarized/themes/neo/bufferline.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/cmp.lua b/lua/solarized/themes/neo/cmp.lua deleted file mode 100644 index 39e540f..0000000 --- a/lua/solarized/themes/neo/cmp.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/dashboard.lua b/lua/solarized/themes/neo/dashboard.lua deleted file mode 100644 index b1e5b51..0000000 --- a/lua/solarized/themes/neo/dashboard.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/diagnostic.lua b/lua/solarized/themes/neo/diagnostic.lua deleted file mode 100644 index c446368..0000000 --- a/lua/solarized/themes/neo/diagnostic.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/editor.lua b/lua/solarized/themes/neo/editor.lua deleted file mode 100644 index b1284ca..0000000 --- a/lua/solarized/themes/neo/editor.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/gitsign.lua b/lua/solarized/themes/neo/gitsign.lua deleted file mode 100644 index d2b79a0..0000000 --- a/lua/solarized/themes/neo/gitsign.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/hop.lua b/lua/solarized/themes/neo/hop.lua deleted file mode 100644 index b99ba00..0000000 --- a/lua/solarized/themes/neo/hop.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/indentblankline.lua b/lua/solarized/themes/neo/indentblankline.lua deleted file mode 100644 index 4f8c122..0000000 --- a/lua/solarized/themes/neo/indentblankline.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/lsp.lua b/lua/solarized/themes/neo/lsp.lua deleted file mode 100644 index 42753e1..0000000 --- a/lua/solarized/themes/neo/lsp.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/lspsaga.lua b/lua/solarized/themes/neo/lspsaga.lua deleted file mode 100644 index 4becadc..0000000 --- a/lua/solarized/themes/neo/lspsaga.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/mini.lua b/lua/solarized/themes/neo/mini.lua deleted file mode 100644 index 6517866..0000000 --- a/lua/solarized/themes/neo/mini.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/navic.lua b/lua/solarized/themes/neo/navic.lua deleted file mode 100644 index d4081cb..0000000 --- a/lua/solarized/themes/neo/navic.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/neogit.lua b/lua/solarized/themes/neo/neogit.lua deleted file mode 100644 index fd368a9..0000000 --- a/lua/solarized/themes/neo/neogit.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/neotree.lua b/lua/solarized/themes/neo/neotree.lua deleted file mode 100644 index 261da66..0000000 --- a/lua/solarized/themes/neo/neotree.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/noice.lua b/lua/solarized/themes/neo/noice.lua deleted file mode 100644 index fc42470..0000000 --- a/lua/solarized/themes/neo/noice.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/notify.lua b/lua/solarized/themes/neo/notify.lua deleted file mode 100644 index c5828f7..0000000 --- a/lua/solarized/themes/neo/notify.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/semantic.lua b/lua/solarized/themes/neo/semantic.lua deleted file mode 100644 index 9af96b2..0000000 --- a/lua/solarized/themes/neo/semantic.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/syntax.lua b/lua/solarized/themes/neo/syntax.lua deleted file mode 100644 index c43149c..0000000 --- a/lua/solarized/themes/neo/syntax.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/telescope.lua b/lua/solarized/themes/neo/telescope.lua deleted file mode 100644 index b961eb9..0000000 --- a/lua/solarized/themes/neo/telescope.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/todo.lua b/lua/solarized/themes/neo/todo.lua deleted file mode 100644 index 75b0785..0000000 --- a/lua/solarized/themes/neo/todo.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/tree.lua b/lua/solarized/themes/neo/tree.lua deleted file mode 100644 index 342356e..0000000 --- a/lua/solarized/themes/neo/tree.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/themes/neo/treesitter.lua b/lua/solarized/themes/neo/treesitter.lua deleted file mode 100644 index 4cd0d60..0000000 --- a/lua/solarized/themes/neo/treesitter.lua +++ /dev/null @@ -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 ` 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 diff --git a/lua/solarized/themes/neo/whichkey.lua b/lua/solarized/themes/neo/whichkey.lua deleted file mode 100644 index 390e163..0000000 --- a/lua/solarized/themes/neo/whichkey.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/utils.lua b/lua/solarized/utils.lua new file mode 100644 index 0000000..1f152fa --- /dev/null +++ b/lua/solarized/utils.lua @@ -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, +} diff --git a/lua/solarized/utils/colors.lua b/lua/solarized/utils/colors.lua deleted file mode 100644 index 9057adb..0000000 --- a/lua/solarized/utils/colors.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/utils/init.lua b/lua/solarized/utils/init.lua deleted file mode 100644 index 5a50a84..0000000 --- a/lua/solarized/utils/init.lua +++ /dev/null @@ -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 diff --git a/lua/solarized/utils/test.lua b/lua/solarized/utils/test.lua deleted file mode 100644 index b04513e..0000000 --- a/lua/solarized/utils/test.lua +++ /dev/null @@ -1,7 +0,0 @@ -local M = {} - -function M.to_hex(decimal) - return string.format('#%06x', decimal) -end - -return M diff --git a/plugin/solarized.lua b/plugin/solarized.lua index c671e1b..0a66113 100644 --- a/plugin/solarized.lua +++ b/plugin/solarized.lua @@ -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 = '+', diff --git a/test.py b/test.py deleted file mode 100755 index 9353cf0..0000000 --- a/test.py +++ /dev/null @@ -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) diff --git a/tests/autocmd_spec.lua b/tests/autocmd_spec.lua deleted file mode 100644 index 2609b63..0000000 --- a/tests/autocmd_spec.lua +++ /dev/null @@ -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) diff --git a/tests/colors_spec.lua b/tests/colors_spec.lua deleted file mode 100644 index da6f034..0000000 --- a/tests/colors_spec.lua +++ /dev/null @@ -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) diff --git a/tests/config_spec.lua b/tests/config_spec.lua deleted file mode 100644 index a86fe97..0000000 --- a/tests/config_spec.lua +++ /dev/null @@ -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) diff --git a/tests/load_spec.lua b/tests/load_spec.lua deleted file mode 100644 index fc7e467..0000000 --- a/tests/load_spec.lua +++ /dev/null @@ -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) diff --git a/tests/palette_spec.lua b/tests/palette_spec.lua deleted file mode 100644 index c423aa7..0000000 --- a/tests/palette_spec.lua +++ /dev/null @@ -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) diff --git a/tests/setup_spec.lua b/tests/setup_spec.lua deleted file mode 100644 index b31888f..0000000 --- a/tests/setup_spec.lua +++ /dev/null @@ -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)