diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 97dc344..fdbeb94 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,30 +32,3 @@ jobs: commit_user_name: "github-actions[bot]" commit_user_email: "github-actions[bot]@users.noreply.github.com" commit_author: "github-actions[bot] " - - test: - name: Run Test - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, macos-latest] - steps: - - uses: actions/checkout@v3 - - uses: rhysd/action-setup-vim@v1 - with: - neovim: true - - - name: luajit - uses: leafo/gh-actions-lua@v10 - with: - luaVersion: "luajit-2.1.0-beta3" - - - name: luarocks - uses: leafo/gh-actions-luarocks@v4 - - - name: run test - shell: bash - run: | - luarocks install luacheck - luarocks install vusted - vusted ./tests 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 new file mode 100644 index 0000000..e3dafbb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,188 @@ +# Contributing to `solarized.nvim` + +Thank you for your interest in contributing to Solarized! +Whether you're here to improve existing features, add new themes, fix bugs, or +enhance documentation, your contributions are highly valued. + +## Usage & Development + +Solarized flips between light and dark modes. In each mode, four monotones +form the core values (with an optional fifth for emphasized content). + +### Manipulating colors + +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/) +- [colorblender](https://github.com/maxmx03/colorblender) + +Additionally, I provide custom functions for color manipulation within the +plugin. These functions are designed to give users more control over their +colorscheme. + +### Solarized Dark + +> [!NOTE] +> The normal relationship for +> background and body text is `base03:base0`, text can be highlighted using a +> combiation of `base02:base1` + +| Name | Hex | Description | +| ------- | ------- | ------------------------------------------ | +| base03 | #002b36 | background | +| base02 | #073642 | background highlight | +| base01 | #586e75 | comments / secondary comment | +| base00 | #657b83 | none | +| base0 | #839496 | body text / default code / primary content | +| base1 | #93a1a1 | optional emphasized content | +| base2 | #eee8d5 | none | +| base3 | #fdf6e3 | none | +| yellow | #b58900 | optional | +| orange | #cb4b16 | optional | +| red | #dc322f | optional | +| magenta | #d33682 | optional | +| violet | #6c71c4 | optional | +| blue | #268bd2 | optional | +| cyan | #2aa198 | optional | +| green | #859900 | optional | + +#### Solarized Dark Extra colors + +- [pinetool](https://pinetools.com/blend-colors) +- [colorblender](https://github.com/maxmx03/colorblender) + +| Name | Hex (balance 70 / 0.3) | Description | +| ----------- | ---------------------- | --------------------------------- | +| base04 | #00222b | sidebar background / float window | +| mix_yellow | #364725 | yellow + base03 / optional | +| mix_orange | #3c342c | orange + base03 / optional | +| mix_red | #422d33 | red + base03 / optional | +| mix_magenta | #3f2e4c | magenta + base03 / optional | +| mix_violet | #204060 | violet + base03 / optional | +| mix_blue | #0b4764 | blue + base03 / optional | +| mix_cyan | #0c4e53 | cyan + base03 / optional | +| mix_green | #274c25 | green + base03 / optional | +| mix_base1 | #2C4E56 | base1 + base03 / visual | + +### Selenized Dark + +| Name | Hex | Description | +| ------- | ------- | ------------------------------------------ | +| base03 | #103c48 | background | +| base02 | #184956 | background highlight | +| base01 | #72898f | comments / secondary comment | +| base00 | #53676d | none | +| base0 | #adbcbc | body text / default code / primary content | +| base1 | #cad8d9 | optional emphasized content | +| base2 | #ece3cc | none | +| base3 | #fbf3db | none | +| yellow | #dbb32d | optional | +| orange | #ed8649 | optional | +| red | #fa5750 | optional | +| magenta | #f275be | optional | +| violet | #af88eb | optional | +| blue | #4695f7 | optional | +| cyan | #41c7b9 | optional | +| green | #75b938 | optional | + +#### Selenized Dark Extra colors + +| Name | Hex (balance 70 / 0.3) | Description | +| ----------- | ---------------------- | --------------------------------- | +| base04 | #0b2a32 | 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 | +| mix_base1 | #486B74 | green + base03 / optional | + +### Solarized Light + +> [!NOTE] +> The normal relationship for +> background and body text is `base3:base00`, text can be highlighted using a +> combiation of `base2:base01` + +| Name | Hex | Description | +| ------- | ------- | ------------------------------------------ | +| base03 | #002b36 | none | +| base02 | #073642 | none | +| base01 | #586e75 | optional emphasized content | +| base00 | #657b83 | body text / default code / primary content | +| base0 | #839496 | none | +| base1 | #93a1a1 | comments / secondary content | +| base2 | #eee8d5 | background highlights | +| base3 | #fdf6e3 | background | +| yellow | #b58900 | optional | +| orange | #cb4b16 | optional | +| red | #dc322f | optional | +| magenta | #d33682 | optional | +| violet | #6c71c4 | optional | +| blue | #268bd2 | optional | +| cyan | #2aa198 | optional | +| green | #859900 | optional | + +#### Solarized Light Extra colors + +- [pinetool](https://pinetools.com/blend-colors) +- [colorblender](https://github.com/maxmx03/colorblender) + +| Name | Hex (balance 90, 0.1) | Description | +| ----------- | ------------------------- | --------------------------------- | +| mix_yellow | #f5ebcc | yellow + base3 / optional | +| mix_orange | #f8e4ce | orange + base3 /optional | +| mix_red | #f9e2d1 | red + base3 / optional | +| mix_magenta | #f8e2d9 | magenta + base3 / optional | +| mix_violet | #eee8df | violet + base3 / optional | +| mix_blue | #e7ebe1 | blue + base3 / optional | +| mix_cyan | #e7eddb | cyan + base3 / optional | +| mix_green | #f1eccc | green + base3 /optional | +| base4 | #fbf3db (selenized base3) | sidebar background / float window | +| mix_base01 | #CCCDC2 | indent blankline | + +### Selenized Light + +| Name | Hex | Description | +| ------- | ------- | ------------------------------------------ | +| base03 | #103c48 | none | +| base02 | #184956 | none | +| base01 | #3a4d53 | optional emphasized content | +| base00 | #53676d | body text / default code / primary content | +| base0 | #adbcbc | none | +| base1 | #909995 | comments / secondary content | +| base2 | #ece3cc | background highlights | +| base3 | #fbf3db | background | +| yellow | #ad8900 | optional | +| orange | #c25d1e | optional | +| red | #d2212d | optional | +| magenta | #ca4898 | optional | +| violet | #8762c6 | optional | +| blue | #0072d4 | optional | +| cyan | #009c8f | optional | +| green | #489100 | optional | + +#### Selenized Light Extra colors + +| Name | Hex (balance 90) | Description | +| ----------- | ---------------- | -------------------------- | +| mix_yellow | #f3e8c5 | yellow + base3 / optional | +| mix_orange | #f5e4c8 | orange + base3 / optional | +| mix_red | #f6dec9 | red + base3 / optional | +| mix_magenta | #f6e1d4 | magenta + base3 / optional | +| mix_violet | #efe4d8 | violet + base3 / optional | +| mix_blue | #e1e6da | blue + base3 / optional | +| mix_cyan | #e1ead3 | cyan + base3 / optional | +| mix_green | #e9e9c5 | green + base3 / optional | +| mix_base01 | #CACBBC | indent blankline | + +## Solarized & Selenized Website + +- [ethanschoonover](https://ethanschoonover.com/solarized/) +- [jan-warchol](https://github.com/jan-warchol/selenized/blob/master/README.md) diff --git a/README.md b/README.md index 60a90c0..6f18d16 100644 --- a/README.md +++ b/README.md @@ -11,30 +11,32 @@ Solarized is a sixteen color palette (eight monotones, eight accent colors) designed for use with terminal and gui applications. [click here to learn more](https://ethanschoonover.com/solarized/) -![solarized](https://github.com/maxmx03/solarized.nvim/assets/50273941/3c2ffda7-9efb-46f4-ad82-7dfd257dda39) +![Component 3](https://github.com/user-attachments/assets/bee944af-df49-46dc-ad9b-c732369b4a3f) + +![Component 1](https://github.com/user-attachments/assets/11d8bd97-0f99-4413-937a-a5eaf4b2a4db) - [Features](#features) - [Requirements](#requirements) - [Install from package manager](#install-from-package-manager) +- [Solarized's Annotations](#solarizeds-annotations) + - [Using `lspconfig`](#using-lspconfig) + - [Using `.luarc.json`](#using-luarcjson) - [Manual Installation](#manual-installation) -- [Help](#help) +- [Docs](#docs) - [Commands](#commands) - [Default Config](#default-config) -- [Config Themes](#config-themes) +- [Config Transparency](#config-transparency) - [Config Styles](#config-styles) - [Config Highlights](#config-highlights) - [Config Colors](#config-colors) -- [Config Enables](#config-enables) -- [Config Autocmd](#config-autocmd) +- [Config Plugins](#config-plugins) - [Lualine](#lualine) - [Barbecue](#barbecue) - [Api](#api) - [Get Colors](#get-colors) - [Color utils](#color-utils) - - [How to get color shades](#how-to-get-color-shades) - - [How to get color tints](#how-to-get-color-tints) - [Contributing](#contributing) - [Designed by](#designed-by) - [Credits and Reference 🎉](#credits-and-reference-🎉) @@ -64,16 +66,19 @@ Download using your preferred package manager. [lazy](https://github.com/folke/lazy.nvim) ```lua - { - 'maxmx03/solarized.nvim', - lazy = false, - priority = 1000, - config = function() - vim.o.background = 'dark' -- or 'light' - - vim.cmd.colorscheme 'solarized' - end, - }, +return { + 'maxmx03/solarized.nvim', + lazy = false, + priority = 1000, + ---@type solarized.config + opts = {}, + config = function(_, opts) + vim.o.termguicolors = true + vim.o.background = 'light' + require('solarized').setup(opts) + vim.cmd.colorscheme 'solarized' + end, +} ``` [packer](https://github.com/wbthomason/packer.nvim) @@ -82,13 +87,52 @@ Download using your preferred package manager. use { 'maxmx03/solarized.nvim', config = function() - vim.o.background = 'dark' -- or 'light' - + vim.o.background = 'dark' + ---@type solarized + local solarized = require('solarized') + vim.o.termguicolors = true + vim.o.background = 'dark' + solarized.setup({}) vim.cmd.colorscheme 'solarized' end } ``` +## Solarized's Annotations + +### Using `lspconfig` + +```lua + local lsp_config = require 'lspconfig' + lsp_config.lua_ls.setup { + settings = { + Lua = { + hint = { + enable = true, + }, + runtime = { + version = 'LuaJIT', + }, + workspace = { + checkThirdParty = true, + library = { + vim.env.VIMRUNTIME, + '~/.local/share/nvim/lazy/solarized.nvim', + }, + }, + }, + }, + } +``` + +### Using `.luarc.json` + +```json +{ + "workspace.library": ["/path/to/nvim/runtime", "/path/to/solarized.nvim"] +} +``` + ## Manual Installation To manually install Solarized, follow these steps: @@ -99,14 +143,13 @@ To manually install Solarized, follow these steps: `lua`, `plugin`. 4. Copy these folders to the `~/.config/nvim` directory. -## Help +## Docs -Use `:h solarized.nvim.txt` to get some help +Use `:h solarized.nvim.txt` to see docs ## Commands - `:Solarized colors` - Display the Solarized palette in a new buffer -- `:Solarized zen`- Removes highlight colors, emphasizing important code segments. ## Default Config @@ -115,61 +158,78 @@ vim.o.background = 'dark' -- default config require('solarized').setup({ - transparent = false, -- enable transparent background - palette = 'solarized', -- or 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', -- or 'neo' - autocmd = true, + transparent = { + enabled = false, + pmenu = true, + normal = true, + normalfloat = true, + neotree = true, + nvimtree = true, + whichkey = true, + telescope = true, + lazy = true, + }, + on_highlights = nil, + on_colors = nil, + palette = 'solarized', -- solarized (default) | selenized + styles = { + types = {}, + functions = {}, + parameters = {}, + comments = {}, + strings = {}, + keywords = {}, + variables = {}, + constants = {}, + }, + plugins = { + treesitter = true, + lspconfig = true, + navic = true, + cmp = true, + indentblankline = true, + neotree = true, + nvimtree = true, + whichkey = true, + dashboard = true, + gitsigns = true, + telescope = true, + noice = true, + hop = true, + ministatusline = true, + minitabline = true, + ministarter = true, + minicursorword = true, + notify = true, + rainbowdelimiters = true, + bufferline = true, + lazy = true, + rendermarkdown = true, + }, }) -vim.cmd.colorscheme = 'solarized' -- or selenized +vim.cmd.colorscheme = 'solarized' ``` -## Config Themes +## Config Transparency -Solarized offers two themes: the default Solarized theme and Neo. -These themes provide different visual styles to enhance your experience. +By default, transparency is turned off, but you can easily enable it and +customize which specific UI components should be transparent. ```lua -require('solarized').setup({ - theme = 'neo' -- or comment to use solarized default theme. -}) +require('solarized').setup { + transparent = { + enabled = true, -- Master switch to enable transparency + pmenu = true, -- Popup menu (e.g., autocomplete suggestions) + normal = true, -- Main editor window background + normalfloat = true, -- Floating windows + neotree = true, -- Neo-tree file explorer + nvimtree = true, -- Nvim-tree file explorer + whichkey = true, -- Which-key popup + telescope = true, -- Telescope fuzzy finder + lazy = true, -- Lazy plugin manager UI + }, +} ``` ## Config Styles @@ -178,12 +238,14 @@ The `styles` config allows you to customize the style of a highlight group. ```lua -require('solarized').setup({ - styles = { +---@type solarized.styles +local styles = { comments = { italic = true, bold = false }, functions = { italic = true }, variables = { italic = false }, - } +} +require('solarized').setup({ + styles = styles, }) ``` @@ -195,18 +257,23 @@ example: ```lua require('solarized').setup { - highlights = function (colors, colorhelper) - local darken = colorhelper.darken - local lighten = colorhelper.lighten - local blend = colorhelper.blend + on_highlights = function (colors, color) + local darken = color.darken + local lighten = color.lighten + local blend = color.blend + local shade = color.shade + local tint = color.tint - return { - LineNr = { fg = c.base1, bg = c.base02 }, - CursorLineNr = { bg = c.base02 }, - CursorLine = { bg = c.base02 }, - Function = { italic = false }, - Visual = { bg = c.cyan }, + ---@type solarized.highlights + local groups = { + Visual = { bg = colors.base02, standout = true }, + Function = { fg = colors.yellow }, + IncSearch = { fg = colors.orange, bg = colors.mix_orange }, + Search = { fg = colors.violet, bg = shade(colors.violet, 5), + NormalFloat = { bg = darken(colors.base03, 25) } } + + return groups end } ``` @@ -216,18 +283,20 @@ require('solarized').setup { The `colors` config allows you to extend or modify the color palette used by solarized. +> [!TIP] +> Use `:Solarized colors` to see available colors. + example: ```lua require('solarized').setup { - colors = function(colors, colorhelper) - local darken = colorhelper.darken - local lighten = colorhelper.lighten - local blend = colorhelper.blend + on_colors = function(colors, color) + local lighten = color.tint + local darken = color.darken return { - fg = '#fff', -- output: #ffffff - bg = darken(colors.base03, 100) + fg = lighten(colors.base00, 2), + bg = darken(colors.base03, 30) } end, highlights = function(colors) @@ -238,50 +307,45 @@ require('solarized').setup { } ``` -## Config Enables +## Config Plugins -The enables config allows you to enable or disable solarized support for +The plugins config allows you to enable or disable solarized support for spefic plugins or neovim's default highlights example: ```lua -require('solarized').setup { - enables = { - editor = true, - syntax = true, - - -- PLUGINS - bufferline = true, - cmp = false, -- disabled - diagnostic = true, - indentblankline = true, - lsp = true, - lspsaga = false, -- disabled - navic = true, - semantic = true, - telescope = true, - tree = false, -- disabled - treesitter = true, - }, - highlights = { - -- your implementation of nvim-tree - -- your implementation of cmp - -- your implementation of lspsaga +return { + 'maxmx03/solarized.nvim', + lazy = false, + priority = 1000, + ---@type solarized.config + opts = { + plugins = { + navic = false, + nvimtree = false, + dashboard = false, + noice = false, + ministatusline = false, + minitabline = false, + ministarter = false, + rainbowdelimiters = false, } + }, + config = function(_, opts) + require('solarized').setup(opts) + vim.cmd.colorscheme 'solarized' + end, } ``` -## Config Autocmd - -This option enhances highlighting by enabling Solarized's autocmd feature. - ## Lualine ```lua require('lualine').setup { options = { theme = 'solarized', + -- theme = 'selenized', disabled_filetypes = { 'NvimTree', }, @@ -311,55 +375,37 @@ require('barbecue').setup { ## Api -You can utilize useful functions to customize your Neovim plugins. - -### Get Colors - ```lua -local palette = require('solarized.palette') -local colors = palette.get_colors() -``` +---@type solarized.palette +local colors = require('solarized.utils').get_colors() +---@type solarized.color +local color = require('solarized.color') +local darken = color.darken +local lighten = color.lighten +local blend = color.blend +local shade = color.shade +local tint = color.tint -### Color utils - -```lua -local color = require('solarized.utils.colors') - --- Convert a hex color code to RGB -color.hex_to_rgb('#ffffff') - --- Darken a color by a specified percentage -color.darken('#ffffff', 100) - --- Lighten a color by a specified percentage -color.lighten('#000000', 100) - --- Blend two colors with a specified ratio -color.blend('#ffffff', '#000000', 0.15) -``` - -### How to get color shades - -```lua -local darken = require('solarized.utils.colors').darken -local colors = require('solarized.palette').get_colors() +-- example 1: get shades for i = 1, 10, 1 do - local shade = darken(colors.blue, i * 10) - - print(shade) + print(shade(colors.yellow, i)) end -``` -### How to get color tints - -```lua -local lighten = require('solarized.utils.colors').lighten +for i = 1, 100, 10 do + print(darken(colors.yellow, i)) +end +-- example 2: get tints for i = 1, 10, 1 do - local tints = lighten(colors.blue, i * 10) - - print(tints) + print(tint(colors.yellow, i)) end + +for i = 1, 100, 10 do + print(lighten(colors.yellow, i)) +end + +-- example 3: blend color +local new_color = blend(colors.yellow, colors.base03, 0.2) ``` ## Contributing @@ -374,7 +420,6 @@ Ethan Schoonover ## Credits and Reference 🎉 -- [onedarkpro](https://github.com/olimorris/onedarkpro.nvim) - [solarized-vim](https://github.com/altercation/vim-colors-solarized) - [tokyonight](https://github.com/folke/tokyonight.nvim) 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/doc/solarized.nvim.txt b/doc/solarized.nvim.txt index bdf000f..ca20baf 100644 --- a/doc/solarized.nvim.txt +++ b/doc/solarized.nvim.txt @@ -1,4 +1,4 @@ -*solarized.nvim.txt* For NVIM v0.9.4 Last change: 2024 August 03 +*solarized.nvim.txt* For NVIM v0.9.4 Last change: 2024 August 27 ============================================================================== Table of Contents *solarized.nvim-table-of-contents* @@ -6,16 +6,16 @@ Table of Contents *solarized.nvim-table-of-contents* - Features |solarized.nvim-features| - Requirements |solarized.nvim-requirements| - Install from package manager |solarized.nvim-install-from-package-manager| + - Solarized’s Annotations |solarized.nvim-solarized’s-annotations| - Manual Installation |solarized.nvim-manual-installation| - - Help |solarized.nvim-help| + - Docs |solarized.nvim-docs| - Commands |solarized.nvim-commands| - Default Config |solarized.nvim-default-config| - - Config Themes |solarized.nvim-config-themes| + - Config Transparency |solarized.nvim-config-transparency| - Config Styles |solarized.nvim-config-styles| - Config Highlights |solarized.nvim-config-highlights| - Config Colors |solarized.nvim-config-colors| - - Config Enables |solarized.nvim-config-enables| - - Config Autocmd |solarized.nvim-config-autocmd| + - Config Plugins |solarized.nvim-config-plugins| - Lualine |solarized.nvim-lualine| - Barbecue |solarized.nvim-barbecue| - Api |solarized.nvim-api| @@ -31,23 +31,23 @@ designed for use with terminal and gui applications. click here to learn more - |solarized.nvim-features| - |solarized.nvim-requirements| - |solarized.nvim-install-from-package-manager| +- |solarized.nvim-solarized’s-annotations| + - |solarized.nvim-using-`lspconfig`| + - |solarized.nvim-using-`.luarc.json`| - |solarized.nvim-manual-installation| -- |solarized.nvim-help| +- |solarized.nvim-docs| - |solarized.nvim-commands| - |solarized.nvim-default-config| -- |solarized.nvim-config-themes| +- |solarized.nvim-config-transparency| - |solarized.nvim-config-styles| - |solarized.nvim-config-highlights| - |solarized.nvim-config-colors| -- |solarized.nvim-config-enables| -- |solarized.nvim-config-autocmd| +- |solarized.nvim-config-plugins| - |solarized.nvim-lualine| - |solarized.nvim-barbecue| - |solarized.nvim-api| - |solarized.nvim-get-colors| - |solarized.nvim-color-utils| - - |solarized.nvim-how-to-get-color-shades| - - |solarized.nvim-how-to-get-color-tints| - |solarized.nvim-contributing| - |solarized.nvim-designed-by| - |solarized.nvim-credits-and-reference-🎉| @@ -79,16 +79,19 @@ Download using your preferred package manager. lazy >lua - { - 'maxmx03/solarized.nvim', - lazy = false, - priority = 1000, - config = function() - vim.o.background = 'dark' -- or 'light' - - vim.cmd.colorscheme 'solarized' - end, - }, + return { + 'maxmx03/solarized.nvim', + lazy = false, + priority = 1000, + ---@type solarized.config + opts = {}, + config = function(_, opts) + vim.o.termguicolors = true + vim.o.background = 'light' + require('solarized').setup(opts) + vim.cmd.colorscheme 'solarized' + end, + } < packer @@ -97,14 +100,56 @@ packer use { 'maxmx03/solarized.nvim', config = function() - vim.o.background = 'dark' -- or 'light' - + vim.o.background = 'dark' + ---@type solarized + local solarized = require('solarized') + vim.o.termguicolors = true + vim.o.background = 'dark' + solarized.setup({}) vim.cmd.colorscheme 'solarized' end } < +SOLARIZED’S ANNOTATIONS *solarized.nvim-solarized’s-annotations* + + +USING LSPCONFIG ~ + +>lua + local lsp_config = require 'lspconfig' + lsp_config.lua_ls.setup { + settings = { + Lua = { + hint = { + enable = true, + }, + runtime = { + version = 'LuaJIT', + }, + workspace = { + checkThirdParty = true, + library = { + vim.env.VIMRUNTIME, + '~/.local/share/nvim/lazy/solarized.nvim', + }, + }, + }, + }, + } +< + + +USING .LUARC.JSON ~ + +>json + { + "workspace.library": ["/path/to/nvim/runtime", "/path/to/solarized.nvim"] + } +< + + MANUAL INSTALLATION *solarized.nvim-manual-installation* To manually install Solarized, follow these steps: @@ -116,15 +161,14 @@ To manually install Solarized, follow these steps: 4. Copy these folders to the `~/.config/nvim` directory. -HELP *solarized.nvim-help* +DOCS *solarized.nvim-docs* -Use |solarized.nvim.txt| to get some help +Use |solarized.nvim.txt| to see docs COMMANDS *solarized.nvim-commands* - `:Solarized colors` - Display the Solarized palette in a new buffer -- `:Solarized zen`- Removes highlight colors, emphasizing important code segments. DEFAULT CONFIG *solarized.nvim-default-config* @@ -134,62 +178,79 @@ DEFAULT CONFIG *solarized.nvim-default-config* -- default config require('solarized').setup({ - transparent = false, -- enable transparent background - palette = 'solarized', -- or 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', -- or 'neo' - autocmd = true, + transparent = { + enabled = false, + pmenu = true, + normal = true, + normalfloat = true, + neotree = true, + nvimtree = true, + whichkey = true, + telescope = true, + lazy = true, + }, + on_highlights = nil, + on_colors = nil, + palette = 'solarized', -- solarized (default) | selenized + styles = { + types = {}, + functions = {}, + parameters = {}, + comments = {}, + strings = {}, + keywords = {}, + variables = {}, + constants = {}, + }, + plugins = { + treesitter = true, + lspconfig = true, + navic = true, + cmp = true, + indentblankline = true, + neotree = true, + nvimtree = true, + whichkey = true, + dashboard = true, + gitsigns = true, + telescope = true, + noice = true, + hop = true, + ministatusline = true, + minitabline = true, + ministarter = true, + minicursorword = true, + notify = true, + rainbowdelimiters = true, + bufferline = true, + lazy = true, + rendermarkdown = true, + }, }) - vim.cmd.colorscheme = 'solarized' -- or selenized + vim.cmd.colorscheme = 'solarized' < -CONFIG THEMES *solarized.nvim-config-themes* +CONFIG TRANSPARENCY *solarized.nvim-config-transparency* -Solarized offers two themes: the default Solarized theme and Neo. These themes -provide different visual styles to enhance your experience. +By default, transparency is turned off, but you can easily enable it and +customize which specific UI components should be transparent. >lua - require('solarized').setup({ - theme = 'neo' -- or comment to use solarized default theme. - }) + require('solarized').setup { + transparent = { + enabled = true, -- Master switch to enable transparency + pmenu = true, -- Popup menu (e.g., autocomplete suggestions) + normal = true, -- Main editor window background + normalfloat = true, -- Floating windows + neotree = true, -- Neo-tree file explorer + nvimtree = true, -- Nvim-tree file explorer + whichkey = true, -- Which-key popup + telescope = true, -- Telescope fuzzy finder + lazy = true, -- Lazy plugin manager UI + }, + } < @@ -198,12 +259,14 @@ CONFIG STYLES *solarized.nvim-config-styles* The `styles` config allows you to customize the style of a highlight group. >lua - require('solarized').setup({ - styles = { + ---@type solarized.styles + local styles = { comments = { italic = true, bold = false }, functions = { italic = true }, variables = { italic = false }, - } + } + require('solarized').setup({ + styles = styles, }) < @@ -216,18 +279,23 @@ example: >lua require('solarized').setup { - highlights = function (colors, colorhelper) - local darken = colorhelper.darken - local lighten = colorhelper.lighten - local blend = colorhelper.blend + on_highlights = function (colors, color) + local darken = color.darken + local lighten = color.lighten + local blend = color.blend + local shade = color.shade + local tint = color.tint - return { - LineNr = { fg = c.base1, bg = c.base02 }, - CursorLineNr = { bg = c.base02 }, - CursorLine = { bg = c.base02 }, - Function = { italic = false }, - Visual = { bg = c.cyan }, + ---@type solarized.highlights + local groups = { + Visual = { bg = colors.base02, standout = true }, + Function = { fg = colors.yellow }, + IncSearch = { fg = colors.orange, bg = colors.mix_orange }, + Search = { fg = colors.violet, bg = shade(colors.violet, 5), + NormalFloat = { bg = darken(colors.base03, 25) } } + + return groups end } < @@ -238,18 +306,19 @@ CONFIG COLORS *solarized.nvim-config-colors* The `colors` config allows you to extend or modify the color palette used by solarized. + + [!TIP] Use `:Solarized colors` to see available colors. example: >lua require('solarized').setup { - colors = function(colors, colorhelper) - local darken = colorhelper.darken - local lighten = colorhelper.lighten - local blend = colorhelper.blend + on_colors = function(colors, color) + local lighten = color.tint + local darken = color.darken return { - fg = '#fff', -- output: #ffffff - bg = darken(colors.base03, 100) + fg = lighten(colors.base00, 2), + bg = darken(colors.base03, 30) } end, highlights = function(colors) @@ -261,52 +330,46 @@ example: < -CONFIG ENABLES *solarized.nvim-config-enables* +CONFIG PLUGINS *solarized.nvim-config-plugins* -The enables config allows you to enable or disable solarized support for spefic +The plugins config allows you to enable or disable solarized support for spefic plugins or neovim’s default highlights example: >lua - require('solarized').setup { - enables = { - editor = true, - syntax = true, - - -- PLUGINS - bufferline = true, - cmp = false, -- disabled - diagnostic = true, - indentblankline = true, - lsp = true, - lspsaga = false, -- disabled - navic = true, - semantic = true, - telescope = true, - tree = false, -- disabled - treesitter = true, - }, - highlights = { - -- your implementation of nvim-tree - -- your implementation of cmp - -- your implementation of lspsaga + return { + 'maxmx03/solarized.nvim', + lazy = false, + priority = 1000, + ---@type solarized.config + opts = { + plugins = { + navic = false, + nvimtree = false, + dashboard = false, + noice = false, + ministatusline = false, + minitabline = false, + ministarter = false, + rainbowdelimiters = false, } + }, + config = function(_, opts) + require('solarized').setup(opts) + vim.cmd.colorscheme 'solarized' + end, } < -CONFIG AUTOCMD *solarized.nvim-config-autocmd* - -This option enhances highlighting by enabling Solarized’s autocmd feature. - - LUALINE *solarized.nvim-lualine* >lua require('lualine').setup { options = { theme = 'solarized', + -- theme = 'selenized', disabled_filetypes = { 'NvimTree', }, @@ -339,59 +402,37 @@ BARBECUE *solarized.nvim-barbecue* API *solarized.nvim-api* -You can utilize useful functions to customize your Neovim plugins. - - -GET COLORS ~ - >lua - local palette = require('solarized.palette') - local colors = palette.get_colors() -< - - -COLOR UTILS ~ - ->lua - local color = require('solarized.utils.colors') + ---@type solarized.palette + local colors = require('solarized.utils').get_colors() + ---@type solarized.color + local color = require('solarized.color') + local darken = color.darken + local lighten = color.lighten + local blend = color.blend + local shade = color.shade + local tint = color.tint - -- Convert a hex color code to RGB - color.hex_to_rgb('#ffffff') - - -- Darken a color by a specified percentage - color.darken('#ffffff', 100) - - -- Lighten a color by a specified percentage - color.lighten('#000000', 100) - - -- Blend two colors with a specified ratio - color.blend('#ffffff', '#000000', 0.15) -< - - -HOW TO GET COLOR SHADES ~ - ->lua - local darken = require('solarized.utils.colors').darken - local colors = require('solarized.palette').get_colors() + -- example 1: get shades for i = 1, 10, 1 do - local shade = darken(colors.blue, i * 10) - - print(shade) + print(shade(colors.yellow, i)) end -< - - -HOW TO GET COLOR TINTS ~ - ->lua - local lighten = require('solarized.utils.colors').lighten + for i = 1, 100, 10 do + print(darken(colors.yellow, i)) + end + + -- example 2: get tints for i = 1, 10, 1 do - local tints = lighten(colors.blue, i * 10) - - print(tints) + print(tint(colors.yellow, i)) end + + for i = 1, 100, 10 do + print(lighten(colors.yellow, i)) + end + + -- example 3: blend color + local new_color = blend(colors.yellow, colors.base03, 0.2) < @@ -409,7 +450,6 @@ Ethan Schoonover CREDITS AND REFERENCE 🎉 *solarized.nvim-credits-and-reference-🎉* -- onedarkpro - solarized-vim - tokyonight @@ -418,9 +458,10 @@ CREDITS AND REFERENCE 🎉 *solarized.nvim-credits-and-reference-🎉* ============================================================================== 1. Links *solarized.nvim-links* -1. *solarized*: https://github.com/maxmx03/solarized.nvim/assets/50273941/3c2ffda7-9efb-46f4-ad82-7dfd257dda39 -2. *Ethan Schoonover*: https://github.com/altercation.png?size=100 -3. *Raphael*: https://github.com/glepnir.png?size=100 +1. *Component 3*: https://github.com/user-attachments/assets/bee944af-df49-46dc-ad9b-c732369b4a3f +2. *Component 1*: https://github.com/user-attachments/assets/11d8bd97-0f99-4413-937a-a5eaf4b2a4db +3. *Ethan Schoonover*: https://github.com/altercation.png?size=100 +4. *Raphael*: https://github.com/glepnir.png?size=100 Generated by panvimdoc diff --git a/lua/barbecue/theme/solarized.lua b/lua/barbecue/theme/solarized.lua index 8c5211c..e61e848 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 = 'Type' }, + context_namespace = { link = 'Type' }, + context_package = { link = 'Directory' }, + context_class = { link = 'Type' }, + context_method = { link = 'Function' }, + context_property = { link = 'Identifier' }, + context_field = { link = 'Identifier' }, + context_constructor = { link = 'Type' }, + 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 = 'Identifier' }, + 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.base00, bold = true }, + context = { fg = c.base00 }, + context_file = { fg = c.base00 }, + context_module = { link = 'Type' }, + context_namespace = { link = 'Type' }, + context_package = { link = 'Directory' }, + context_class = { link = 'Type' }, + context_method = { link = 'Function' }, + context_property = { link = 'Identifier' }, + context_field = { link = 'Identifier' }, + context_constructor = { link = 'Type' }, + 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 = 'Identifier' }, + 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..7996fa8 100644 --- a/lua/lualine/themes/solarized.lua +++ b/lua/lualine/themes/solarized.lua @@ -1,25 +1,47 @@ -local solarized_palette = require('solarized.palette') -local colors = solarized_palette.get_colors() - -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 +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 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..73d076d 100644 --- a/lua/solarized/command.lua +++ b/lua/solarized/command.lua @@ -1,38 +1,42 @@ -local command = { - zen_mode = false, -} +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 +57,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..d5ef8c9 100644 --- a/lua/solarized/config.lua +++ b/lua/solarized/config.lua @@ -1,104 +1,114 @@ -local palette = require('solarized.palette') -local solarized = require('solarized.highlights') -local colorhelper = require('solarized.utils.colors') -local utils = require('solarized.utils') +---@class solarized.transparent +---@field normal? boolean +---@field normalfloat? boolean +---@field pmenu? boolean +---@field neotree? boolean +---@field nvimtree? boolean +---@field telescope? boolean +---@field whichkey? boolean +---@field lazy? boolean +---@field enabled? boolean -local M = {} +---@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 +---@field statements? vim.api.keyset.highlight -M.config = nil -M.colors = nil +---@class solarized.plugins +---@field treesitter? boolean +---@field lspconfig? boolean +---@field navic? boolean +---@field cmp? boolean +---@field indentblankline? boolean +---@field neotree? boolean +---@field nvimtree? boolean +---@field whichkey? boolean +---@field dashboard? boolean +---@field gitsigns? boolean +---@field telescope? boolean +---@field noice? boolean +---@field hop? boolean +---@field ministatusline? boolean +---@field minitabline? boolean +---@field ministarter? boolean +---@field minicursorword? boolean +---@field notify? boolean +---@field rainbowdelimiters? boolean +---@field bufferline? boolean +---@field lazy? boolean +---@field rendermarkdown? boolean +---@field neogit? boolean +---@field todocomments? boolean +---@field ale? boolean +---@field alpha? boolean +---@field yanky? boolean +---@field gitgutter? boolean +---@field coc? boolean +---@field leap? boolean ---- 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? solarized.transparent +---@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 = { + enabled = false, + pmenu = true, + normal = true, + normalfloat = true, + neotree = true, + nvimtree = true, + whichkey = true, + telescope = true, + lazy = true, + }, + on_highlights = nil, + on_colors = nil, + palette = 'solarized', + styles = { + types = {}, + functions = {}, + parameters = {}, + comments = {}, + strings = {}, + keywords = {}, + variables = {}, + statements = {}, + constants = {}, + }, + plugins = { + treesitter = true, + lspconfig = true, + navic = true, + cmp = true, + indentblankline = true, + neotree = true, + nvimtree = true, + whichkey = true, + dashboard = true, + gitsigns = true, + telescope = true, + noice = true, + hop = true, + ministatusline = true, + minitabline = true, + ministarter = true, + minicursorword = true, + notify = true, + rainbowdelimiters = true, + bufferline = true, + lazy = true, + rendermarkdown = true, + neogit = true, + todocomments = 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..fcb20d9 --- /dev/null +++ b/lua/solarized/highlights/init.lua @@ -0,0 +1,1115 @@ +---@class solarized.highlights +---@field ColorColumn? vim.api.keyset.highlight +---@field Conceal? vim.api.keyset.highlight +---@field CurSearch? vim.api.keyset.highlight +---@field Cursor? vim.api.keyset.highlight +---@field lCursor? vim.api.keyset.highlight +---@field CursorIM? vim.api.keyset.highlight +---@field CursorColumn? vim.api.keyset.highlight +---@field CursorLine? vim.api.keyset.highlight +---@field Directory? vim.api.keyset.highlight +---@field DiffAdd? vim.api.keyset.highlight +---@field DiffChange? vim.api.keyset.highlight +---@field DiffDelete? vim.api.keyset.highlight +---@field DiffText? vim.api.keyset.highlight +---@field EndOfBuffer? vim.api.keyset.highlight +---@field TermCursor? vim.api.keyset.highlight +---@field TermCursorNC? vim.api.keyset.highlight +---@field ErrorMsg? vim.api.keyset.highlight +---@field WinSeparator? vim.api.keyset.highlight +---@field Folded? vim.api.keyset.highlight +---@field FoldColumn? vim.api.keyset.highlight +---@field SignColumn? vim.api.keyset.highlight +---@field IncSearch? vim.api.keyset.highlight +---@field Substitute? vim.api.keyset.highlight +---@field LineNr? vim.api.keyset.highlight +---@field LineNrAbove? vim.api.keyset.highlight +---@field LineNrBelow? vim.api.keyset.highlight +---@field CursorLineNr? vim.api.keyset.highlight +---@field CursorLineFold? vim.api.keyset.highlight +---@field CursorLineSign? vim.api.keyset.highlight +---@field MatchParen? vim.api.keyset.highlight +---@field ModeMsg? vim.api.keyset.highlight +---@field MsgArea? vim.api.keyset.highlight +---@field MsgSeparator? vim.api.keyset.highlight +---@field MoreMsg? vim.api.keyset.highlight +---@field NonText? vim.api.keyset.highlight +---@field Normal? vim.api.keyset.highlight +---@field NormalFloat? vim.api.keyset.highlight +---@field FloatBorder? vim.api.keyset.highlight +---@field FloatTitle? vim.api.keyset.highlight +---@field NormalNC? vim.api.keyset.highlight +---@field Pmenu? vim.api.keyset.highlight +---@field PmenuSel? vim.api.keyset.highlight +---@field PmenuKind? vim.api.keyset.highlight +---@field PmenuKindSel? vim.api.keyset.highlight +---@field PmenuExtra? vim.api.keyset.highlight +---@field PmenuExtraSel? vim.api.keyset.highlight +---@field PmenuSbar? vim.api.keyset.highlight +---@field PmenuThumb? vim.api.keyset.highlight +---@field Question? vim.api.keyset.highlight +---@field QuickFixLine? vim.api.keyset.highlight +---@field Search? vim.api.keyset.highlight +---@field SpecialKey? vim.api.keyset.highlight +---@field SpellBad? vim.api.keyset.highlight +---@field SpellCap? vim.api.keyset.highlight +---@field SpellLocal? vim.api.keyset.highlight +---@field SpellRare? vim.api.keyset.highlight +---@field StatusLine? vim.api.keyset.highlight +---@field StatusLineNC? vim.api.keyset.highlight +---@field TabLine? vim.api.keyset.highlight +---@field TabLineFill? vim.api.keyset.highlight +---@field TabLineSel? vim.api.keyset.highlight +---@field Title? vim.api.keyset.highlight +---@field Visual? vim.api.keyset.highlight +---@field VisualNOS? vim.api.keyset.highlight +---@field warningMsg? vim.api.keyset.highlight +---@field Whitespace? vim.api.keyset.highlight +---@field WildMenu? vim.api.keyset.highlight +---@field WinBar? vim.api.keyset.highlight +---@field WinBarNC? vim.api.keyset.highlight +---@field Comment? vim.api.keyset.highlight +---@field Constant? vim.api.keyset.highlight +---@field String? vim.api.keyset.highlight +---@field Character? vim.api.keyset.highlight +---@field Number? vim.api.keyset.highlight +---@field Boolean? vim.api.keyset.highlight +---@field Float? vim.api.keyset.highlight +---@field Identifier? vim.api.keyset.highlight +---@field Function? vim.api.keyset.highlight +---@field Statement? vim.api.keyset.highlight +---@field Conditional? vim.api.keyset.highlight +---@field Repeat? vim.api.keyset.highlight +---@field Label? vim.api.keyset.highlight +---@field Operator? vim.api.keyset.highlight +---@field Keyword? vim.api.keyset.highlight +---@field Exception? vim.api.keyset.highlight +---@field PreProc? vim.api.keyset.highlight +---@field Include? vim.api.keyset.highlight +---@field Define? vim.api.keyset.highlight +---@field Macro? vim.api.keyset.highlight +---@field PreCondit? vim.api.keyset.highlight +---@field Type? vim.api.keyset.highlight +---@field StorageClass? vim.api.keyset.highlight +---@field Structure? vim.api.keyset.highlight +---@field Typedef? vim.api.keyset.highlight +---@field Special? vim.api.keyset.highlight +---@field SpecialChar? vim.api.keyset.highlight +---@field Tag? vim.api.keyset.highlight +---@field Delimiter? vim.api.keyset.highlight +---@field SpecialComment? vim.api.keyset.highlight +---@field Debug? vim.api.keyset.highlight +---@field Underlined? vim.api.keyset.highlight +---@field Ignore? vim.api.keyset.highlight +---@field Error? vim.api.keyset.highlight +---@field Todo? vim.api.keyset.highlight +---@field Added? vim.api.keyset.highlight +---@field Changed? vim.api.keyset.highlight +---@field Removed? vim.api.keyset.highlight +---@field DiagnosticError? vim.api.keyset.highlight +---@field DiagnosticWarn? vim.api.keyset.highlight +---@field DiagnosticInfo? vim.api.keyset.highlight +---@field DiagnosticHint? vim.api.keyset.highlight +---@field DiagnosticOk? vim.api.keyset.highlight +---@field DiagnosticVirtualTextError? vim.api.keyset.highlight +---@field DiagnosticVirtualTextWarn? vim.api.keyset.highlight +---@field DiagnosticVirtualTextInfo? vim.api.keyset.highlight +---@field DiagnosticVirtualTextHint? vim.api.keyset.highlight +---@field DiagnosticVirtualTextOk? vim.api.keyset.highlight +---@field DiagnosticUnderlineError? vim.api.keyset.highlight +---@field DiagnosticUnderlineWarn? vim.api.keyset.highlight +---@field DiagnosticUnderlineInfo? vim.api.keyset.highlight +---@field DiagnosticUnderlineHint? vim.api.keyset.highlight +---@field DiagnosticUnderlineOk? vim.api.keyset.highlight +---@field LspReferenceText? vim.api.keyset.highlight +---@field LspReferenceRead? vim.api.keyset.highlight +---@field LspReferenceWrite? vim.api.keyset.highlight +---@field LspInlayHint? vim.api.keyset.highlight +---@field NavicText? vim.api.keyset.highlight +---@field NavicSeparator? vim.api.keyset.highlight +---@field NavicIconsMethod? vim.api.keyset.highlight +---@field NavicIconsFunction? vim.api.keyset.highlight +---@field NavicIconsField? vim.api.keyset.highlight +---@field NavicIconsVariable? vim.api.keyset.highlight +---@field NavicIconsClass? vim.api.keyset.highlight +---@field NavicIconsInterface? vim.api.keyset.highlight +---@field NavicIconsModule? vim.api.keyset.highlight +---@field NavicIconsNamespace? vim.api.keyset.highlight +---@field NavicIconsProperty? vim.api.keyset.highlight +---@field NavicIconsUnit? vim.api.keyset.highlight +---@field NavicIconsEnum? vim.api.keyset.highlight +---@field NavicIconsKeyword? vim.api.keyset.highlight +---@field NavicIconsSnippet? vim.api.keyset.highlight +---@field NavicIconsColor? vim.api.keyset.highlight +---@field NavicIconsFile? vim.api.keyset.highlight +---@field NavicIconsReference? vim.api.keyset.highlight +---@field NavicIconsFolder? vim.api.keyset.highlight +---@field NavicIconsEnumMember? vim.api.keyset.highlight +---@field NavicIconsConstant? vim.api.keyset.highlight +---@field NavicIconsStruct? vim.api.keyset.highlight +---@field NavicIconsEvent? vim.api.keyset.highlight +---@field NavicIconsOperator? vim.api.keyset.highlight +---@field NavicIconsTypeParameter? vim.api.keyset.highlight +---@field CmpItemKindText? vim.api.keyset.highlight +---@field CmpItemKindMethod? vim.api.keyset.highlight +---@field CmpItemKindFunction? vim.api.keyset.highlight +---@field CmpItemKindField? vim.api.keyset.highlight +---@field CmpItemKindVariable? vim.api.keyset.highlight +---@field CmpItemKindClass? vim.api.keyset.highlight +---@field CmpItemKindInterface? vim.api.keyset.highlight +---@field CmpItemKindModule? vim.api.keyset.highlight +---@field CmpItemKindProperty? vim.api.keyset.highlight +---@field CmpItemKindUnit? vim.api.keyset.highlight +---@field CmpItemKindEnum? vim.api.keyset.highlight +---@field CmpItemKindKeyword? vim.api.keyset.highlight +---@field CmpItemKindSnippet? vim.api.keyset.highlight +---@field CmpItemKindColor? vim.api.keyset.highlight +---@field CmpItemKindFile? vim.api.keyset.highlight +---@field CmpItemKindReference? vim.api.keyset.highlight +---@field CmpItemKindFolder? vim.api.keyset.highlight +---@field CmpItemKindEnumMember? vim.api.keyset.highlight +---@field CmpItemKindConstant? vim.api.keyset.highlight +---@field CmpItemKindStruct? vim.api.keyset.highlight +---@field CmpItemKindEvent? vim.api.keyset.highlight +---@field CmpItemKindOperator? vim.api.keyset.highlight +---@field CmpItemKindTypeParameter? vim.api.keyset.highlight +---@field IblIndent? vim.api.keyset.highlight +---@field IblScope? vim.api.keyset.highlight +---@field NeoTreeTitleBar? vim.api.keyset.highlight +---@field NeoTreeNormal? vim.api.keyset.highlight +---@field NeoTreeNormalNC? vim.api.keyset.highlight +---@field NeoTreeDotFile? vim.api.keyset.highlight +---@field NeoTreeFileNameOpened? vim.api.keyset.highlight +---@field NeoTreeFloatBorder? vim.api.keyset.highlight +---@field NeoTreeFloatTitle? vim.api.keyset.highlight +---@field NeoTreeGitAdded? vim.api.keyset.highlight +---@field NeoTreeGitConflict? vim.api.keyset.highlight +---@field NeoTreeGitDeleted? vim.api.keyset.highlight +---@field NeoTreeGitIgnored? vim.api.keyset.highlight +---@field NeoTreeGitModified? vim.api.keyset.highlight +---@field NeoTreeGitUnstaged? vim.api.keyset.highlight +---@field NeoTreeGitUntracked? vim.api.keyset.highlight +---@field NeoTreeGitStaged? vim.api.keyset.highlight +---@field NvimTreeSymlink? vim.api.keyset.highlight +---@field NvimTreeSymlinkIcon? vim.api.keyset.highlight +---@field NvimTreeFolderName? vim.api.keyset.highlight +---@field NvimTreeRootFolder? vim.api.keyset.highlight +---@field NvimTreeFolderIcon? vim.api.keyset.highlight +---@field NvimTreeEmptyFolderName? vim.api.keyset.highlight +---@field NvimTreeExecFile? vim.api.keyset.highlight +---@field NvimTreeOpenedFile? vim.api.keyset.highlight +---@field NvimTreeModifiedFile? vim.api.keyset.highlight +---@field NvimTreeSpecialFile? vim.api.keyset.highlight +---@field NvimTreeIndentMarker? vim.api.keyset.highlight +---@field NvimTreeGitDirty? vim.api.keyset.highlight +---@field NvimTreeGitStaged? vim.api.keyset.highlight +---@field NvimTreeGitMerge? vim.api.keyset.highlight +---@field NvimTreeGitRenamed? vim.api.keyset.highlight +---@field NvimTreeGitNew? vim.api.keyset.highlight +---@field NvimTreeGitDeleted? vim.api.keyset.highlight +---@field NvimTreeNormal? vim.api.keyset.highlight +---@field NvimTreeNormalFloat? vim.api.keyset.highlight +---@field NvimTreeEndOfBuffer? vim.api.keyset.highlight +---@field NvimTreeWinSeparator? vim.api.keyset.highlight +---@field WhichKeyNormal? vim.api.keyset.highlight +---@field WhichKey? vim.api.keyset.highlight +---@field WhichKeyDesc? vim.api.keyset.highlight +---@field WhichKeySeparator? vim.api.keyset.highlight +---@field WhichKeyGroup? vim.api.keyset.highlight +---@field DashboardHeader? vim.api.keyset.highlight +---@field DashboardFooter? vim.api.keyset.highlight +---@field DashboardDesc? vim.api.keyset.highlight +---@field DashboardKey? vim.api.keyset.highlight +---@field DashboardIcon? vim.api.keyset.highlight +---@field DashboardShotCut? vim.api.keyset.highlight +---@field GitSignsAdd? vim.api.keyset.highlight +---@field GitSignsChange? vim.api.keyset.highlight +---@field GitSignsDelete? vim.api.keyset.highlight +---@field TelescopeSelection? vim.api.keyset.highlight +---@field TelescopeSelectionCaret? vim.api.keyset.highlight +---@field TelescopeMultiIcon? vim.api.keyset.highlight +---@field TelescopeNormal? vim.api.keyset.highlight +---@field TelescopePreviewNormal? vim.api.keyset.highlight +---@field TelescopePromptNormal? vim.api.keyset.highlight +---@field TelescopeResultsNormal? vim.api.keyset.highlight +---@field TelescopeBorder? vim.api.keyset.highlight +---@field TelescopePromptBorder? vim.api.keyset.highlight +---@field TelescopeResultsBorder? vim.api.keyset.highlight +---@field TelescopePreviewBorder? vim.api.keyset.highlight +---@field TelescopeTitle? vim.api.keyset.highlight +---@field TelescopePromptTitle? vim.api.keyset.highlight +---@field TelescopeResultsTitle? vim.api.keyset.highlight +---@field TelescopePreviewTitle? vim.api.keyset.highlight +---@field TelescopeMatching? vim.api.keyset.highlight +---@field TelescopePreviewMatch? vim.api.keyset.highlight +---@field TelescopePromptCounter? vim.api.keyset.highlight +---@field TelescopePromptPrefix? vim.api.keyset.highlight +---@field NoiceFormatProgressTodo? vim.api.keyset.highlight +---@field NoiceFormatProgressDone? vim.api.keyset.highlight +---@field NoiceLspProgressSpinner? vim.api.keyset.highlight +---@field NoiceLspProgressClient? vim.api.keyset.highlight +---@field NoiceCmdlineIcon? vim.api.keyset.highlight +---@field NoiceCmdlinePopupBorder? vim.api.keyset.highlight +---@field NoiceCmdlinePopupTitle? vim.api.keyset.highlight +---@field NoiceLspProgressTitle? vim.api.keyset.highlight +---@field HopNextKey? vim.api.keyset.highlight +---@field HopNextKey1? vim.api.keyset.highlight +---@field HopUnmatched? vim.api.keyset.highlight +---@field MiniStatuslineModeNormal? vim.api.keyset.highlight +---@field MiniStatuslineModeInsert? vim.api.keyset.highlight +---@field MiniStatuslineModeVisual? vim.api.keyset.highlight +---@field MiniStatuslineModeReplace? vim.api.keyset.highlight +---@field MiniStatuslineModeCommand? vim.api.keyset.highlight +---@field MinistatusLineFileName? vim.api.keyset.highlight +---@field MiniStatuslineDevinfo? vim.api.keyset.highlight +---@field MiniStatuslineFileinfo? vim.api.keyset.highlight +---@field MiniStatuslineInactive? vim.api.keyset.highlight +---@field MiniTablineCurrent? vim.api.keyset.highlight +---@field MiniTablineVisible? vim.api.keyset.highlight +---@field MiniTablineHidden? vim.api.keyset.highlight +---@field MiniTablineModifiedCurrent? vim.api.keyset.highlight +---@field MiniTablineModifiedVisible? vim.api.keyset.highlight +---@field MiniTablineModifiedHidden? vim.api.keyset.highlight +---@field MiniTablineFill? vim.api.keyset.highlight +---@field MiniTablineTabpagesection? vim.api.keyset.highlight +---@field MiniStarterCurrent? vim.api.keyset.highlight +---@field MiniStarterHeader? vim.api.keyset.highlight +---@field MiniStarterFooter? vim.api.keyset.highlight +---@field MiniStarterItem? vim.api.keyset.highlight +---@field MiniStarterItemBullet? vim.api.keyset.highlight +---@field MiniStarterItemPrefix? vim.api.keyset.highlight +---@field MiniStarterSection? vim.api.keyset.highlight +---@field MiniStarterQuery? vim.api.keyset.highlight +---@field MiniCursorword? vim.api.keyset.highlight +---@field NotifyBackground? vim.api.keyset.highlight +---@field NotifyERRORBorder? vim.api.keyset.highlight +---@field NotifyWARNBorder? vim.api.keyset.highlight +---@field NotifyINFOBorder? vim.api.keyset.highlight +---@field NotifyDEBUGBorder? vim.api.keyset.highlight +---@field NotifyTRACEBorder? vim.api.keyset.highlight +---@field NotifyERRORIcon? vim.api.keyset.highlight +---@field NotifyWARNIcon? vim.api.keyset.highlight +---@field NotifyINFOIcon? vim.api.keyset.highlight +---@field NotifyDEBUGIcon? vim.api.keyset.highlight +---@field NotifyTRACEIcon? vim.api.keyset.highlight +---@field NotifyERRORTitle? vim.api.keyset.highlight +---@field NotifyWARNTitle? vim.api.keyset.highlight +---@field NotifyINFOTitle? vim.api.keyset.highlight +---@field NotifyDEBUGTitle? vim.api.keyset.highlight +---@field NotifyTRACETitle? vim.api.keyset.highlight +---@field NotifyERRORBody? vim.api.keyset.highlight +---@field NotifyWARNBody? vim.api.keyset.highlight +---@field NotifyINFOBody? vim.api.keyset.highlight +---@field NotifyDEBUGBody? vim.api.keyset.highlight +---@field NotifyTRACEBody? vim.api.keyset.highlight +---@field RainbowDelimiterRed? vim.api.keyset.highlight +---@field RainbowDelimiteYellow? vim.api.keyset.highlight +---@field RainbowDelimiterBlue? vim.api.keyset.highlight +---@field RainbowDelimiterOrange? vim.api.keyset.highlight +---@field RainbowDelimiterGreen? vim.api.keyset.highlight +---@field RainbowDelimiterViolet? vim.api.keyset.highlight +---@field RainbowDelimiterCyan? vim.api.keyset.highlight +---@field BufferLineFill? vim.api.keyset.highlight +---@field BufferLineBufferSelected? vim.api.keyset.highlight +---@field BufferLineSeparator? vim.api.keyset.highlight +---@field BufferLineSeparatorSelected? vim.api.keyset.highlight +---@field BufferLineSeparatorVisible? vim.api.keyset.highlight +---@field LazyNormal? vim.api.keyset.highlight +---@field LazyH1? vim.api.keyset.highlight +---@field LazyButton? vim.api.keyset.highlight +---@field LazyButtonActive? vim.api.keyset.highlight +---@field LazyReasonStart? vim.api.keyset.highlight +---@field LazyReasonEvent? vim.api.keyset.highlight +---@field RenderMarkdownH1Bg? vim.api.keyset.highlight +---@field RenderMarkdownH2Bg? vim.api.keyset.highlight +---@field RenderMarkdownH3Bg? vim.api.keyset.highlight +---@field RenderMarkdownH4Bg? vim.api.keyset.highlight +---@field RenderMarkdownH5Bg? vim.api.keyset.highlight +---@field RenderMarkdownH6Bg? vim.api.keyset.highlight +---@field NeogitBranch? vim.api.keyset.highlight +---@field NeogitRemote? vim.api.keyset.highlight +---@field NeogitHunkHeader? vim.api.keyset.highlight +---@field NeogitHunkHeaderHighlight? vim.api.keyset.highlight +---@field NeogitDiffContextHighlight? vim.api.keyset.highlight +---@field NeogitDiffContext? vim.api.keyset.highlight +---@field NeogitDiffDeleteHighlight? vim.api.keyset.highlight +---@field NeogitDiffDelete? vim.api.keyset.highlight +---@field NeogitDiffAddHighlight? vim.api.keyset.highlight +---@field NeogitDiffAdd? vim.api.keyset.highlight +---@field TodoFgTODO? vim.api.keyset.highlight +---@field TodoFgWARN? vim.api.keyset.highlight +---@field TodoFgTEST? vim.api.keyset.highlight +---@field TodoFgPERF? vim.api.keyset.highlight +---@field TodoFgNOTE? vim.api.keyset.highlight +---@field TodoFgHACK? vim.api.keyset.highlight +---@field TodoFgFIX? vim.api.keyset.highlight +---@field TodoSignTODO? vim.api.keyset.highlight +---@field TodoSignWARN? vim.api.keyset.highlight +---@field TodoSignTEST? vim.api.keyset.highlight +---@field TodoSignPERF? vim.api.keyset.highlight +---@field TodoSignNOTE? vim.api.keyset.highlight +---@field TodoSignHACK? vim.api.keyset.highlight +---@field TodoSignFIX? vim.api.keyset.highlight +---@field TodoBgTODO? vim.api.keyset.highlight +---@field TodoBgWARN? vim.api.keyset.highlight +---@field TodoBgTEST? vim.api.keyset.highlight +---@field TodoBgPERF? vim.api.keyset.highlight +---@field TodoBgNOTE? vim.api.keyset.highlight +---@field TodoBgHACK? vim.api.keyset.highlight +---@field TodoBgFIX? vim.api.keyset.highlight +---@field ALEErrorSign? vim.api.keyset.highlight +---@field ALEWarningSign? vim.api.keyset.highlight +---@field AlphaShortcut? vim.api.keyset.highlight +---@field AlphaHeader? vim.api.keyset.highlight +---@field AlphaHeaderLabel? vim.api.keyset.highlight +---@field AlphaFooter? vim.api.keyset.highlight +---@field AlphaButtons? vim.api.keyset.highlight +---@field YankyPut? vim.api.keyset.highlight +---@field YankyYanked? vim.api.keyset.highlight +---@field GitGutterAdd? vim.api.keyset.highlight +---@field GitGutterChange? vim.api.keyset.highlight +---@field GitGutterDelete? vim.api.keyset.highlight +---@field GitGutterAddLineNr? vim.api.keyset.highlight +---@field GitGutterChangeLineNr? vim.api.keyset.highlight +---@field GitGutterDeleteLineNr? vim.api.keyset.highlight +---@field CocErrorSign? vim.api.keyset.highlight +---@field CocWarningSign? vim.api.keyset.highlight +---@field CocInfoSign? vim.api.keyset.highlight +---@field CocHintSign? vim.api.keyset.highlight +---@field CocErrorVirtualText? vim.api.keyset.highlight +---@field CocWarningVirtualText? vim.api.keyset.highlight +---@field CocInfoVirtualText? vim.api.keyset.highlight +---@field CocHintVirtualText? vim.api.keyset.highlight +---@field LeapMatch? vim.api.keyset.highlight +---@field LeapLabel? vim.api.keyset.highlight +---@field LeapBackDrop? vim.api.keyset.highlight + +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.base02 }) + 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.base01, bg = colors.base04 }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl('Folded', { fg = colors.base0, bg = colors.base02 }) + nvim_set_hl('FoldColumn', { fg = colors.base0, bg = colors.base04 }) + nvim_set_hl( + 'SignColumn', + { fg = colors.base01, bg = colors.base02 }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl('IncSearch', { fg = colors.magenta, bg = colors.mix_magenta }) + nvim_set_hl('Substitute', { link = 'IncSearch' }) + nvim_set_hl( + 'LineNr', + { fg = colors.base01, bg = colors.base02 }, + { transparent = config.transparent.enabled } + ) + 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.enabled } + ) + 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.normal and config.transparent.enabled } + ) + nvim_set_hl('NormalFloat', { fg = colors.base0, bg = colors.base04 }, { + transparent = config.transparent.normal and config.transparent.enabled, + }) + 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.pmenu and config.transparent.enabled, + }) + nvim_set_hl('PmenuSel', { fg = colors.base2, bg = colors.base01 }) + 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.base1 }) + nvim_set_hl('Question', { fg = colors.diag_info }) + nvim_set_hl('QuickFixLine', { fg = colors.base0, bg = colors.base03 }) + nvim_set_hl('Search', { fg = colors.base1, bg = colors.mix_base1, bold = true }) + 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', { fg = colors.base1, bg = colors.mix_base1 }) + 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 }, { styles = config.styles.comments }) + nvim_set_hl('Constant', { fg = colors.violet }, { styles = config.styles.constants }) + nvim_set_hl('String', { fg = colors.cyan }, { styles = config.styles.strings }) + 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 }, { styles = config.styles.variables }) + nvim_set_hl('Function', { fg = colors.blue }, { styles = config.styles.functions }) + nvim_set_hl('Statement', { fg = colors.green }, { styles = config.styles.statements }) + 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 }, { styles = config.styles.keywords }) + 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 }, { styles = config.styles.types }) + 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.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 }, + { styles = config.styles.parameters } + ) + 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 = 'Type' }) + 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('@attribute', { link = 'Keyword' }) + nvim_set_hl('@function', { link = 'Function' }) + nvim_set_hl('@function.builtin', { fg = colors.yellow }, { styles = config.styles.functions }) + 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.type', { 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 = '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.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 = '@function.builtin' }) + 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, bg = colors.mix_red }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'DiagnosticWarn', + { fg = colors.diag_warning, bg = colors.mix_yellow }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl('DiagnosticInfo', { fg = colors.diag_info, bg = colors.mix_base1 }, { + { transparent = config.transparent.enabled }, + }) + nvim_set_hl( + 'DiagnosticHint', + { fg = colors.diag_hint, bg = colors.mix_base1 }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl('DiagnosticOk', { fg = colors.diag_ok, bg = colors.mix_green }, { + { transparent = config.transparent.enabled }, + }) + nvim_set_hl('DiagnosticVirtualTextError', { fg = colors.diag_error }) + nvim_set_hl('DiagnosticVirtualTextWarn', { fg = colors.diag_warning }) + nvim_set_hl('DiagnosticVirtualTextInfo', { fg = colors.diag_info }) + nvim_set_hl('DiagnosticVirtualTextHint', { fg = colors.diag_hint }) + nvim_set_hl('DiagnosticVirtualTextOk', { fg = colors.diag_ok }) + 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', { fg = colors.cyan, bg = colors.mix_cyan }) + nvim_set_hl('LspReferenceRead', { fg = colors.green, bg = colors.mix_green }) + nvim_set_hl('LspReferenceWrite', { fg = colors.green, bg = colors.mix_green }) + nvim_set_hl('LspInlayHint', { fg = colors.base01 }) + end + + if config.plugins.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', { link = 'Special' }) + 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.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', { link = 'Special' }) + 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.indentblankline then + nvim_set_hl('IblIndent', { fg = colors.mix_base1 }) + nvim_set_hl('IblScope', { fg = colors.base01 }) + end + + if config.plugins.neotree then + nvim_set_hl('NeoTreeTitleBar', { fg = colors.cyan, bg = colors.mix_cyan }) + nvim_set_hl( + 'NeoTreeNormal', + { fg = colors.base1, bg = colors.base04 }, + { transparent = config.transparent.neotree and config.transparent.enabled } + ) + 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.nvimtree 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.neotree and config.transparent.enabled } + ) + nvim_set_hl('NvimTreeNormalFloat', { link = 'NvimTreeNormal' }) + nvim_set_hl('NvimTreeEndOfBuffer', { fg = colors.base04 }) + nvim_set_hl('NvimTreeWinSeparator', { link = 'WinSeparator' }) + end + + if config.plugins.whichkey then + nvim_set_hl( + 'WhichKeyNormal', + { fg = colors.base0, bg = colors.base04 }, + { transparent = config.transparent.whichkey and config.transparent.enabled } + ) + nvim_set_hl('WhichKey', { fg = colors.base1 }) + nvim_set_hl('WhichKeyDesc', { fg = colors.blue }) + nvim_set_hl('WhichKeySeparator', { fg = colors.green }) + nvim_set_hl('WhichKeyGroup', { fg = colors.cyan }) + end + + if config.plugins.dashboard 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 then + nvim_set_hl( + 'GitSignsAdd', + { fg = colors.git_add, bg = colors.base02 }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl('GitSignsChange', { fg = colors.git_modify, bg = colors.base02 }, { + transparent = config.transparent.enabled, + }) + nvim_set_hl('GitSignsDelete', { fg = colors.git_delete, bg = colors.base02 }, { + transparent = config.transparent.enabled, + }) + end + + if config.plugins.telescope then + nvim_set_hl('TelescopeSelection', { fg = colors.base0 }) + nvim_set_hl('TelescopeSelectionCaret', { fg = colors.base1 }) + nvim_set_hl('TelescopeMultiIcon', { fg = colors.base1 }) + nvim_set_hl( + 'TelescopeNormal', + { fg = colors.base0, bg = colors.base04 }, + { transparent = config.transparent.telescope and config.transparent.enabled } + ) + nvim_set_hl('TelescopePreviewNormal', { link = 'TelescopeNormal' }) + nvim_set_hl('TelescopePromptNormal', { link = 'TelescopeNormal' }) + nvim_set_hl('TelescopeResultsNormal', { link = 'TelescopeNormal' }) + nvim_set_hl( + 'TelescopeBorder', + { link = 'WinSeparator' }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl('TelescopePromptBorder', { link = 'TelescopeBorder' }) + nvim_set_hl('TelescopeResultsBorder', { link = 'TelescopeBorder' }) + nvim_set_hl('TelescopePreviewBorder', { link = 'TelescopeBorder' }) + nvim_set_hl('TelescopeTitle', { fg = colors.mix_base1, bg = colors.base1 }) + nvim_set_hl('TelescopePromptTitle', { link = 'TelescopeTitle' }) + nvim_set_hl('TelescopeResultsTitle', { link = 'TelescopeTitle' }) + nvim_set_hl('TelescopePreviewTitle', { link = 'TelescopeTitle' }) + nvim_set_hl('TelescopeMatching', { fg = colors.cyan, bg = colors.mix_cyan }) + nvim_set_hl('TelescopePreviewMatch', { link = 'TelescopeMatching' }) + nvim_set_hl('TelescopePromptCounter', { link = 'NonText' }) + nvim_set_hl('TelescopePromptPrefix', { fg = colors.cyan }) + end + + if config.plugins.noice 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' }) + nvim_set_hl('NoiceCmdlineIcon', { link = 'WinSeparator' }) + nvim_set_hl('NoiceCmdlinePopupBorder', { link = 'WinSeparator' }) + nvim_set_hl('NoiceCmdlinePopupTitle', { link = 'Title' }) + end + + if config.plugins.hop then + nvim_set_hl('HopNextKey', { fg = colors.magenta }) + nvim_set_hl('HopNextKey1', { fg = colors.blue }) + nvim_set_hl('HopNextKey2', { fg = colors.cyan }) + nvim_set_hl('HopUnmatched', { fg = colors.base01 }) + end + + if config.plugins.ministatusline 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.minitabline 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.ministarter 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.minicursorword then + nvim_set_hl('MiniCursorword', { fg = colors.cyan, bg = colors.mix_cyan }) + end + + if config.plugins.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 }) + nvim_set_hl('NotifyWARNBody', { fg = colors.diag_warning }) + nvim_set_hl('NotifyINFOBody', { fg = colors.diag_info }) + nvim_set_hl('NotifyDEBUGBody', { fg = colors.magenta }) + nvim_set_hl('NotifyTRACEBody', { fg = colors.blue }) + end + + if config.plugins.rainbowdelimiters 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.plugins.bufferline and config.transparent then + local color = require 'solarized.color' + local background = color.shade(colors.base02, 2) + nvim_set_hl('BufferLineFill', { bg = background }) + nvim_set_hl('BufferLineBufferSelected', { fg = colors.base0 }) + nvim_set_hl('BufferLineSeparator', { fg = background }) + nvim_set_hl('BufferLineSeparatorSelected', { fg = background }) + nvim_set_hl('BufferLineSeparatorVisible', { fg = background }) + end + + if config.plugins.lazy then + nvim_set_hl('LazyNormal', { fg = colors.base0, bg = colors.base04 }, { + transparent = config.transparent.lazy and config.transparent.enabled, + }) + nvim_set_hl('LazyH1', { fg = colors.blue, bold = true }) + nvim_set_hl('LazyButton', { fg = colors.cyan, bg = colors.mix_cyan }) + nvim_set_hl('LazyButtonActive', { fg = colors.violet, bg = colors.mix_violet }) + nvim_set_hl('LazyReasonStart', { fg = colors.yellow }) + nvim_set_hl('LazyReasonEvent', { fg = colors.magenta }) + end + + if config.plugins.rendermarkdown then + nvim_set_hl('RenderMarkdownH1Bg', { fg = colors.blue, bg = colors.mix_blue }) + nvim_set_hl('RenderMarkdownH2Bg', { fg = colors.violet, bg = colors.mix_violet }) + nvim_set_hl('RenderMarkdownH3Bg', { fg = colors.yellow, bg = colors.mix_yellow }) + nvim_set_hl('RenderMarkdownH4Bg', { fg = colors.orange, bg = colors.mix_orange }) + nvim_set_hl('RenderMarkdownH5Bg', { fg = colors.red, bg = colors.mix_red }) + nvim_set_hl('RenderMarkdownH6Bg', { fg = colors.magenta, bg = colors.mix_magenta }) + end + + if config.plugins.neogit then + nvim_set_hl('NeogitBranch', { fg = colors.red }) + nvim_set_hl('NeogitRemote', { fg = colors.violet }) + nvim_set_hl('NeogitHunkHeader', { fg = colors.blue, bg = colors.mix_blue, bold = true }) + nvim_set_hl('NeogitHunkHeaderHighlight', { link = 'Title' }) + nvim_set_hl('NeogitDiffContextHighlight', { fg = colors.base1, bg = colors.base02 }) + nvim_set_hl('NeogitDiffContext', { fg = colors.base0, bg = colors.base03 }) + nvim_set_hl('NeogitDiffDeleteHighlight', { fg = colors.red, bg = colors.mix_red }) + nvim_set_hl('NeogitDiffDelete', { fg = colors.red }) + nvim_set_hl('NeogitDiffAddHighlight', { fg = colors.blue, bg = colors.mix_blue }) + nvim_set_hl('NeogitDiffAdd', { fg = colors.blue }) + end + + if config.plugins.todocomments then + nvim_set_hl('TodoFgTODO', { fg = colors.blue }) + nvim_set_hl('TodoFgWARN', { fg = colors.yellow }) + nvim_set_hl('TodoFgTEST', { fg = colors.violet }) + nvim_set_hl('TodoFgPERF', { fg = colors.magenta }) + nvim_set_hl('TodoFgNOTE', { fg = colors.cyan }) + nvim_set_hl('TodoFgHACK', { fg = colors.orange }) + nvim_set_hl('TodoFgFIX', { fg = colors.red }) + + nvim_set_hl('TodoSignTODO', { fg = colors.blue }) + nvim_set_hl('TodoSignWARN', { fg = colors.yellow }) + nvim_set_hl('TodoSignTEST', { fg = colors.violet }) + nvim_set_hl('TodoSignPERF', { fg = colors.magenta }) + nvim_set_hl('TodoSignNOTE', { fg = colors.cyan }) + nvim_set_hl('TodoSignHACK', { fg = colors.orange }) + nvim_set_hl('TodoSignFIX', { fg = colors.red }) + + nvim_set_hl('TodoBgTODO', { fg = colors.blue, bg = colors.mix_blue }) + nvim_set_hl('TodoBgWARN', { fg = colors.yellow, bg = colors.mix_yellow }) + nvim_set_hl('TodoBgTEST', { fg = colors.violet, bg = colors.mix_violet }) + nvim_set_hl('TodoBgPERF', { fg = colors.magenta, bg = colors.mix_magenta }) + nvim_set_hl('TodoBgNOTE', { fg = colors.cyan, bg = colors.mix_cyan }) + nvim_set_hl('TodoBgHACK', { fg = colors.orange, bg = colors.mix_orange }) + nvim_set_hl('TodoBgFIX', { fg = colors.red, bg = colors.mix_red }) + end + + if config.plugins.ale then + nvim_set_hl('ALEErrorSign', { fg = colors.diag_error }) + nvim_set_hl('ALEWarningSign', { fg = colors.diag_warning }) + end + + if config.plugins.alpha then + nvim_set_hl('AlphaShortcut', { fg = colors.base0 }) + nvim_set_hl('AlphaHeader', { fg = colors.base01 }) + nvim_set_hl('AlphaHeaderLabel', { fg = colors.orange }) + nvim_set_hl('AlphaFooter', { fg = colors.violet }) + nvim_set_hl('AlphaButtons', { link = 'Directory' }) + end + + if config.plugins.yanky then + nvim_set_hl('YankyPut', { link = 'Search' }) + nvim_set_hl('YankyYanked', { link = 'IncSearch' }) + end + + if config.plugins.gitgutter then + nvim_set_hl('GitGutterAdd', { fg = colors.git_add }) + nvim_set_hl('GitGutterChange', { fg = colors.git_modify }) + nvim_set_hl('GitGutterDelete', { fg = colors.git_delete }) + nvim_set_hl('GitGutterAddLineNr', { fg = colors.git_add }) + nvim_set_hl('GitGutterChangeLineNr', { fg = colors.git_modify }) + nvim_set_hl('GitGutterDeleteLineNr', { fg = colors.git_delete }) + end + + if config.plugins.coc then + nvim_set_hl('CocErrorSign', { fg = colors.diag_error }) + nvim_set_hl('CocWarningSign', { fg = colors.diag_warning }) + nvim_set_hl('CocInfoSign', { fg = colors.diag_info }) + nvim_set_hl('CocHintSign', { fg = colors.diag_hint }) + nvim_set_hl('CocErrorVirtualText', { fg = colors.diag_error, bg = colors.mix_red }) + nvim_set_hl('CocWarningVirtualText', { fg = colors.diag_warning, bg = colors.mix_yellow }) + nvim_set_hl('CocInfoVirtualText', { fg = colors.diag_info, bg = colors.mix_base1 }) + nvim_set_hl('CocHintVirtualText', { fg = colors.diag_hint, bg = colors.mix_base1 }) + end + + if config.plugins.leap then + nvim_set_hl('LeapMatch', { fg = colors.magenta, bg = colors.mix_magenta, bold = true }) + nvim_set_hl('LeapLabel', { fg = colors.magenta, bold = true }) + nvim_set_hl('LeapBackDrop', { fg = colors.base01 }) + 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 = {} + + if hl.link then + val = group_val + else + val = vim.tbl_extend('force', hl, group_val) + end + + 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..8bde43f --- /dev/null +++ b/lua/solarized/highlights/solarized-light.lua @@ -0,0 +1,753 @@ +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.blue, bg = colors.base4 }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl('Folded', { fg = colors.base00, bg = colors.base2 }) + nvim_set_hl('FoldColumn', { fg = colors.base00, bg = colors.base2 }) + nvim_set_hl( + 'SignColumn', + { fg = colors.base00, bg = colors.base2 }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'IncSearch', + { fg = colors.yellow, bg = colors.mix_yellow, bold = true }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl('Substitute', { link = 'IncSearch' }) + nvim_set_hl( + 'LineNr', + { fg = colors.base1, bg = colors.base2 }, + { transparent = config.transparent.enabled } + ) + 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.enabled } + ) + 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.normal and config.transparent.enabled } + ) + nvim_set_hl('NormalFloat', { fg = colors.base00, bg = colors.base4 }, { + transparent = config.transparent.normalfloat and config.transparent.enabled, + }) + 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.base4 }, { + transparent = config.transparent.pmenu and config.transparent.enabled, + }) + 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.green, bg = colors.mix_green }) + 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', { fg = colors.magenta, bg = colors.mix_magenta, bold = true }) + 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 }, { styles = config.styles.comments }) + nvim_set_hl('Constant', { fg = colors.magenta }, { styles = config.styles.constants }) + nvim_set_hl('String', { fg = colors.cyan }, { styles = config.styles.strings }) + 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', { fg = colors.blue }, { styles = config.styles.functions }) + nvim_set_hl('Statement', { fg = colors.green }, { styles = config.styles.statements }) + 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 }, { styles = config.styles.keywords }) + 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 }, { styles = config.styles.types }) + 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.red }) + 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.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 }, + { styles = config.styles.parameters } + ) + 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 = 'Type' }) + 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('@attribute', { link = 'Keyword' }) + nvim_set_hl('@property.json', { fg = colors.green }) + nvim_set_hl('@property.yaml', { 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, bold = true }) + nvim_set_hl('@markup.italic', { link = 'Underlined' }) + nvim_set_hl('@markup.strikethrough', { fg = colors.base1, strikethrough = true }) + nvim_set_hl('@markup.underline', { link = 'Underlined' }) + nvim_set_hl('@markup.heading', { fg = colors.red, bold = true }) + nvim_set_hl('@markup.heading.1', { fg = colors.red, bold = true }) + nvim_set_hl('@markup.heading.2', { fg = colors.magenta }) + 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.blue }) + nvim_set_hl('@markup.heading.6', { fg = colors.violet }) + 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.base00 }) + 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.base1 }) + 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.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 = '@function.builtin' }) + 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, bg = colors.mix_red }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'DiagnosticWarn', + { fg = colors.diag_warning, bg = colors.mix_yellow }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'DiagnosticInfo', + { fg = colors.diag_info, bg = colors.mix_blue }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'DiagnosticHint', + { fg = colors.diag_hint, bg = colors.mix_blue }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'DiagnosticOk', + { fg = colors.diag_ok, bg = colors.mix_green }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'DiagnosticVirtualTextError', + { fg = colors.diag_error, bg = colors.mix_red }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'DiagnosticVirtualTextWarn', + { fg = colors.diag_warning, bg = colors.mix_yellow }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'DiagnosticVirtualTextInfo', + { fg = colors.diag_hint, bg = colors.mix_blue }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'DiagnosticVirtualTextHint', + { fg = colors.diag_info, bg = colors.mix_blue }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'DiagnosticVirtualTextOk', + { fg = colors.diag_ok, bg = colors.mix_green }, + { transparent = config.transparent.enabled } + ) + 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', { fg = colors.cyan, bg = colors.mix_cyan }) + nvim_set_hl('LspReferenceRead', { link = 'Visual' }) + nvim_set_hl('LspReferenceWrite', { link = 'Visual' }) + nvim_set_hl('LspInlayHint', { fg = colors.base1 }) + end + + if config.plugins.navic then + nvim_set_hl('NavicText', { fg = colors.base00 }) + 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.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.indentblankline then + nvim_set_hl('IblIndent', { fg = colors.mix_base01 }) + nvim_set_hl('IblScope', { fg = colors.base1 }) + end + + if config.plugins.neotree then + nvim_set_hl('NeoTreeTitleBar', { fg = colors.blue, reverse = true }) + nvim_set_hl( + 'NeoTreeNormal', + { fg = colors.base01, bg = colors.base4 }, + { transparent = config.transparent.neotree and config.transparent.enabled } + ) + 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.nvimtree then + nvim_set_hl('NvimTreeSymlink', { link = 'Underlined' }) + nvim_set_hl('NvimTreeSymlinkIcon', { link = 'Directory' }) + nvim_set_hl('NvimTreeFolderName', { fg = colors.base01 }) + nvim_set_hl('NvimTreeRootFolder', { link = 'Title' }) + nvim_set_hl('NvimTreeFolderIcon', { link = 'Directory' }) + nvim_set_hl('NvimTreeEmptyFolderName', { fg = colors.base01 }) + 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.base4 }, + { transparent = config.transparent.nvimtree and config.transparent.enabled } + ) + nvim_set_hl('NvimTreeNormalFloat', { link = 'NvimTreeNormal' }) + nvim_set_hl('NvimTreeEndOfBuffer', { fg = colors.base4 }) + nvim_set_hl('NvimTreeWinSeparator', { link = 'WinSeparator' }) + end + + if config.plugins.whichkey then + nvim_set_hl( + 'WhichKeyNormal', + { fg = colors.base01, bg = colors.base4 }, + { transparent = config.transparent.whichkey and config.transparent.enabled } + ) + 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 then + nvim_set_hl('DashboardHeader', { fg = colors.magenta }) + 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.base00 }) + end + + if config.plugins.gitsigns then + nvim_set_hl( + 'GitSignsAdd', + { fg = colors.git_add, bg = colors.base2 }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'GitSignsChange', + { fg = colors.git_modify, bg = colors.base2 }, + { transparent = config.transparent.enabled } + ) + nvim_set_hl( + 'GitSignsDelete', + { fg = colors.git_delete, bg = colors.base2 }, + { transparent = config.transparent.enabled } + ) + end + + if config.plugins.telescope then + nvim_set_hl('TelescopeSelection', { fg = colors.blue, bg = colors.mix_blue }) + nvim_set_hl('TelescopeSelectionCaret', { fg = colors.blue, bg = colors.mix_blue }) + nvim_set_hl('TelescopeMultiIcon', { fg = colors.blue }) + nvim_set_hl( + 'TelescopeNormal', + { fg = colors.base0, bg = colors.base4 }, + { transparent = config.transparent.telescope and config.transparent.enabled } + ) + nvim_set_hl('TelescopePreviewNormal', { link = 'TelescopeNormal' }) + nvim_set_hl('TelescopePromptNormal', { link = 'TelescopeNormal' }) + nvim_set_hl('TelescopeResultsNormal', { link = 'TelescopeNormal' }) + nvim_set_hl('TelescopeBorder', { link = 'WinSeparator' }) + nvim_set_hl('TelescopePromptBorder', { link = 'TelescopeBorder' }) + nvim_set_hl('TelescopeResultsBorder', { link = 'TelescopeBorder' }) + nvim_set_hl('TelescopePreviewBorder', { link = 'TelescopeBorder' }) + nvim_set_hl('TelescopeTitle', { fg = colors.mix_blue, bg = colors.blue }) + 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 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' }) + nvim_set_hl('NoiceCmdlineIcon', { link = 'WinSeparator' }) + nvim_set_hl('NoiceCmdlinePopupBorder', { link = 'WinSeparator' }) + nvim_set_hl('NoiceCmdlinePopupTitle', { link = 'Title' }) + end + + if config.plugins.hop 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.ministatusline 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.minitabline 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.base00, bg = colors.base2 }) + end + + if config.plugins.ministarter then + nvim_set_hl('MiniStarterCurrent', { link = 'CursorLine' }) + nvim_set_hl('MiniStarterHeader', { fg = colors.base1 }) + nvim_set_hl('MiniStarterFooter', { fg = colors.violet }) + nvim_set_hl('MiniStarterItem', { fg = colors.base00 }) + 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.minicursorword then + nvim_set_hl('MiniCursorword', { link = 'Visual' }) + end + + if config.plugins.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 }) + nvim_set_hl('NotifyWARNBody', { fg = colors.diag_warning }) + nvim_set_hl('NotifyINFOBody', { fg = colors.diag_info }) + nvim_set_hl('NotifyDEBUGBody', { fg = colors.magenta }) + nvim_set_hl('NotifyTRACEBody', { fg = colors.blue }) + end + + if config.plugins.rainbowdelimiters 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.plugins.bufferline and config.transparent then + local color = require 'solarized.color' + local background = color.shade(colors.base2, 2) + nvim_set_hl('BufferLineFill', { bg = background }) + nvim_set_hl('BufferLineBufferSelected', { fg = colors.base01, bold = true }) + nvim_set_hl('BufferLineSeparator', { fg = background }) + nvim_set_hl('BufferLineSeparatorSelected', { fg = background }) + nvim_set_hl('BufferLineSeparatorVisible', { fg = background }) + end + + if config.plugins.lazy then + nvim_set_hl('LazyNormal', { fg = colors.base0, bg = colors.base04 }, { + transparent = config.transparent.lazy and config.transparent.enabled, + }) + nvim_set_hl('LazyH1', { fg = colors.blue, bold = true }) + nvim_set_hl('LazyButton', { fg = colors.green, bg = colors.mix_green }) + nvim_set_hl('LazyButtonActive', { fg = colors.yellow, bg = colors.mix_yellow }) + nvim_set_hl('LazyReasonStart', { fg = colors.yellow }) + nvim_set_hl('LazyReasonEvent', { fg = colors.red }) + end + + if config.plugins.rendermarkdown then + nvim_set_hl('RenderMarkdownH1Bg', { fg = colors.red, bg = colors.mix_red }) + nvim_set_hl('RenderMarkdownH2Bg', { fg = colors.magenta, bg = colors.mix_magenta }) + nvim_set_hl('RenderMarkdownH3Bg', { fg = colors.yellow, bg = colors.mix_yellow }) + nvim_set_hl('RenderMarkdownH4Bg', { fg = colors.orange, bg = colors.mix_orange }) + nvim_set_hl('RenderMarkdownH5Bg', { fg = colors.blue, bg = colors.mix_blue }) + nvim_set_hl('RenderMarkdownH5Bg', { fg = colors.blue, bg = colors.mix_blue }) + end + + if config.plugins.neogit then + nvim_set_hl('NeogitBranch', { fg = colors.magenta }) + nvim_set_hl('NeogitRemote', { fg = colors.violet }) + nvim_set_hl('NeogitHunkHeader', { fg = colors.red, bg = colors.mix_red, bold = true }) + nvim_set_hl('NeogitHunkHeaderHighlight', { link = 'Title' }) + nvim_set_hl('NeogitDiffContextHighlight', { fg = colors.base01, bg = colors.base2 }) + nvim_set_hl('NeogitDiffContext', { fg = colors.base00, bg = colors.base3 }) + nvim_set_hl('NeogitDiffDeleteHighlight', { fg = colors.red, bg = colors.mix_red }) + nvim_set_hl('NeogitDiffDelete', { fg = colors.red }) + nvim_set_hl('NeogitDiffAddHighlight', { fg = colors.green, bg = colors.mix_green }) + nvim_set_hl('NeogitDiffAdd', { fg = colors.green }) + end + + if config.plugins.todocomments then + nvim_set_hl('TodoFgTODO', { fg = colors.blue }) + nvim_set_hl('TodoFgWARN', { fg = colors.yellow }) + nvim_set_hl('TodoFgTEST', { fg = colors.violet }) + nvim_set_hl('TodoFgPERF', { fg = colors.magenta }) + nvim_set_hl('TodoFgNOTE', { fg = colors.cyan }) + nvim_set_hl('TodoFgHACK', { fg = colors.orange }) + nvim_set_hl('TodoFgFIX', { fg = colors.red }) + + nvim_set_hl('TodoSignTODO', { fg = colors.blue }) + nvim_set_hl('TodoSignWARN', { fg = colors.yellow }) + nvim_set_hl('TodoSignTEST', { fg = colors.violet }) + nvim_set_hl('TodoSignPERF', { fg = colors.magenta }) + nvim_set_hl('TodoSignNOTE', { fg = colors.cyan }) + nvim_set_hl('TodoSignHACK', { fg = colors.orange }) + nvim_set_hl('TodoSignFIX', { fg = colors.red }) + + nvim_set_hl('TodoBgTODO', { fg = colors.blue, bg = colors.mix_blue }) + nvim_set_hl('TodoBgWARN', { fg = colors.yellow, bg = colors.mix_yellow }) + nvim_set_hl('TodoBgTEST', { fg = colors.violet, bg = colors.mix_violet }) + nvim_set_hl('TodoBgPERF', { fg = colors.magenta, bg = colors.mix_magenta }) + nvim_set_hl('TodoBgNOTE', { fg = colors.cyan, bg = colors.mix_cyan }) + nvim_set_hl('TodoBgHACK', { fg = colors.orange, bg = colors.mix_orange }) + nvim_set_hl('TodoBgFIX', { fg = colors.red, bg = colors.mix_red }) + end + + if config.plugins.ale then + nvim_set_hl('ALEErrorSign', { fg = colors.diag_error }) + nvim_set_hl('ALEWarningSign', { fg = colors.diag_warning }) + end + + if config.plugins.alpha then + nvim_set_hl('AlphaShortcut', { fg = colors.base00 }) + nvim_set_hl('AlphaHeader', { fg = colors.magenta }) + nvim_set_hl('AlphaHeaderLabel', { fg = colors.red }) + nvim_set_hl('AlphaFooter', { fg = colors.violet }) + nvim_set_hl('AlphaButtons', { link = 'Directory' }) + end + + if config.plugins.yanky then + nvim_set_hl('YankyPut', { link = 'Search' }) + nvim_set_hl('YankyYanked', { link = 'IncSearch' }) + end + + if config.plugins.gitgutter then + nvim_set_hl('GitGutterAdd', { fg = colors.git_add }) + nvim_set_hl('GitGutterChange', { fg = colors.git_modify }) + nvim_set_hl('GitGutterDelete', { fg = colors.git_delete }) + nvim_set_hl('GitGutterAddLineNr', { fg = colors.git_add }) + nvim_set_hl('GitGutterChangeLineNr', { fg = colors.git_modify }) + nvim_set_hl('GitGutterDeleteLineNr', { fg = colors.git_delete }) + end + + if config.plugins.coc then + nvim_set_hl('CocErrorSign', { fg = colors.diag_error }) + nvim_set_hl('CocWarningSign', { fg = colors.diag_warning }) + nvim_set_hl('CocInfoSign', { fg = colors.diag_info }) + nvim_set_hl('CocHintSign', { fg = colors.diag_hint }) + nvim_set_hl('CocErrorVirtualText', { fg = colors.diag_error, bg = colors.mix_red }) + nvim_set_hl('CocWarningVirtualText', { fg = colors.diag_warning, bg = colors.mix_yellow }) + nvim_set_hl('CocInfoVirtualText', { fg = colors.diag_info, bg = colors.mix_blue }) + nvim_set_hl('CocHintVirtualText', { fg = colors.diag_hint, bg = colors.mix_blue }) + end + + if config.plugins.leap then + nvim_set_hl('LeapMatch', { fg = colors.magenta, bg = colors.mix_magenta, bold = true }) + nvim_set_hl('LeapLabel', { fg = colors.magenta, bold = true }) + nvim_set_hl('LeapBackDrop', { fg = colors.base01 }) + 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 = {} + + if hl.link then + val = group_val + else + val = vim.tbl_extend('force', hl, group_val) + end + + 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..9599302 100644 --- a/lua/solarized/init.lua +++ b/lua/solarized/init.lua @@ -1,7 +1,40 @@ -local config = require('solarized.config') +---@class solarized +---@field config? solarized.config +---@field setup? fun(config: solarized.config) +---@field load? fun() +---@type solarized 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..68d2532 --- /dev/null +++ b/lua/solarized/palette/init.lua @@ -0,0 +1,121 @@ +---@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 base4? 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 mix_base1? string +---@field mix_base01? 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', + base4 = '#fbf3db', + blue = '#268BD2', + cyan = '#2AA198', + diag_error = '#DC322F', + diag_hint = '#93A1A1', + diag_info = '#93A1A1', + 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', + mix_base1 = '#2C4E56', + mix_base01 = '#CCCDC2', + orange = '#CB4B16', + red = '#DC322F', + violet = '#6C71C4', + yellow = '#B58900', +} + +---@type solarized.palette +M.selenized = { + base04 = '#0b2a32', + base03 = '#103c48', + base02 = '#184956', + base01 = '#72898f', + base00 = '#53676d', + base0 = '#adbcbc', + base1 = '#cad8d9', + base2 = '#ece3cc', + base3 = '#fbf3db', + base4 = '#ece3cc', + yellow = '#dbb32d', + orange = '#ed8649', + red = '#fa5750', + magenta = '#f275be', + violet = '#af88eb', + blue = '#4695f7', + cyan = '#41c7b9', + green = '#75b938', + mix_yellow = '#4c5f3f', + mix_orange = '#525248', + mix_red = '#56444a', + mix_magenta = '#534d6b', + mix_violet = '#3f5278', + mix_blue = '#20567c', + mix_cyan = '#1e6569', + mix_green = '#2e6143', + mix_base1 = '#486B74', + mix_base01 = '#CACBBC', + diag_error = '#fa5750', + diag_hint = '#75b938', + diag_info = '#75b938', + 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..6e96329 --- /dev/null +++ b/lua/solarized/palette/solarized-light.lua @@ -0,0 +1,83 @@ +local M = {} + +---@type solarized.palette +M.solarized = { + base04 = '#001E26', + base03 = '#002b36', + base02 = '#073642', + base01 = '#586E75', + base00 = '#657B83', + base0 = '#839496', + base1 = '#93A1A1', + base2 = '#EEE8D5', + base3 = '#FDF6E3', + base4 = '#fbf3db', + 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 = '#e7ebe1', + mix_cyan = '#e7eddb', + mix_green = '#f1eccc', + mix_magenta = '#f8e2d9', + mix_orange = '#f8e4ce', + mix_base1 = '#2C4E56', + mix_base01 = '#CCCDC2', + mix_red = '#f9e2d1', + mix_violet = '#eee8df', + mix_yellow = '#f5ebcc', +} + +---@type solarized.palette +M.selenized = { + base04 = '#0b2a32', + base03 = '#103c48', + base02 = '#184956', + base01 = '#3a4d53', + base00 = '#53676d', + base0 = '#53676d', + base1 = '#909995', + base2 = '#ece3cc', + base3 = '#fbf3db', + base4 = '#ece3cc', + 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 = '#f3e8c5', + mix_orange = '#f5e4c8', + mix_red = '#f6dec9', + mix_magenta = '#f6e1d4', + mix_violet = '#efe4d8', + mix_blue = '#e1e6da', + mix_cyan = '#e1ead3', + mix_green = '#e9e9c5', + mix_base1 = '#486B74', + mix_base01 = '#CACBBC', +} + +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..d59d5d8 --- /dev/null +++ b/lua/solarized/utils.lua @@ -0,0 +1,37 @@ +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 + +local function get_colors() + local config = require('solarized').config + local colors = {} + if vim.o.background == 'dark' then + local palette = require 'solarized.palette' + colors = palette[config.palette] + else + local palette = require 'solarized.palette.solarized-light' + colors = palette[config.palette] + end + return colors +end + +return { + get_colors = get_colors, + 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/stylua.toml b/stylua.toml index a1f3ee7..49da646 100644 --- a/stylua.toml +++ b/stylua.toml @@ -1,7 +1,6 @@ -column_width = 80 +column_width = 100 line_endings = "Unix" indent_type = "Spaces" indent_width = 2 quote_style = "AutoPreferSingle" -call_parentheses = "Always" -collapse_simple_statement = "ConditionalOnly" +call_parentheses = "None" 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 index fc7e467..f5decc6 100644 --- a/tests/load_spec.lua +++ b/tests/load_spec.lua @@ -1,30 +1,23 @@ -local utils = require('solarized.utils.test') -local to_hex = utils.to_hex +local nvim_get_hl = require('solarized.utils').nvim_get_hl -describe('Initialization', function() +describe('solarized.load', function() setup(function() - vim.o.background = 'light' - vim.cmd.colorscheme('solarized') + vim.o.background = 'dark' + 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) + test('name', function() + local expected = 'solarized' + assert.equal(expected, vim.g.colors_name) 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)) + test('default config', function() + local config = require 'solarized.config' + assert.True(type(config) == 'table') 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)) + test('set_highlight', function() + local Comment = nvim_get_hl 'Comment' + assert.True('#586E75' == Comment.fg) 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 index b31888f..bb43193 100644 --- a/tests/setup_spec.lua +++ b/tests/setup_spec.lua @@ -1,85 +1,49 @@ -local solarized_palette = require('solarized.palette') -local utils = require('solarized.utils.test') -local to_hex = utils.to_hex +local nvim_get_hl = require('solarized.utils').nvim_get_hl -describe('Setup', function() +describe('solarized.setup', function() setup(function() - local solarized = require('solarized') + vim.o.background = 'light' + ---@type solarized + 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 }, + solarized.setup { + transparent = { + enabled = true, }, - highlights = function(c) + styles = { + strings = { italic = true }, + comments = { bold = true }, + }, + on_colors = function() return { - Normal = { fg = c.fg, bg = c.bg }, - Function = { italic = false }, - Type = { fg = c.yellow2 }, - ['@function.builtin'] = { link = 'Special' }, + mycolor = '#ffffff', } end, - }) - - vim.cmd.colorscheme('solarized') + on_highlights = function(colors) + return { + ---@diagnostic disable-next-line: undefined-field + CustomHighlight = { fg = colors.mycolor }, + } + 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)) + test('transparent', function() + local normal = nvim_get_hl 'Normal' + assert.falsy(normal.bg) 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) + test('on_colors and on_highlight', function() + local user_group = nvim_get_hl 'CustomHighlight' + local expected = { fg = '#FFFFFF' } + assert.are.same(expected, user_group) end) - test('Changing Function Style', function() - local output = vim.api.nvim_get_hl(0, { name = 'Function' }) - - assert.is_true(output.cterm.italic) + test('styles', function() + local strings = nvim_get_hl 'String' + local comments = nvim_get_hl 'Comment' + assert.True(strings.italic) + assert.True(comments.bold) 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)