Merge pull request #86 from maxmx03/dev

solarized update
This commit is contained in:
Max Del Canto 2024-08-27 12:42:54 -03:00 committed by GitHub
commit c3b4695ba2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
80 changed files with 3204 additions and 3029 deletions

View file

@ -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] <github-actions[bot]@users.noreply.github.com>"
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

3
.gitignore vendored Normal file
View file

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

View file

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

188
CONTRIBUTING.md Normal file
View file

@ -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)

363
README.md
View file

@ -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)
<!--toc:start-->
- [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)

View file

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

View file

@ -1,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|
- Solarizeds Annotations |solarized.nvim-solarizeds-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-solarizeds-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 <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>
@ -97,14 +100,56 @@ packer <https://github.com/wbthomason/packer.nvim>
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
}
<
SOLARIZEDS ANNOTATIONS *solarized.nvim-solarizeds-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 neovims 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 Solarizeds 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 <https://github.com/olimorris/onedarkpro.nvim>
- solarized-vim <https://github.com/altercation/vim-colors-solarized>
- tokyonight <https://github.com/folke/tokyonight.nvim>
@ -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 <https://github.com/kdheepak/panvimdoc>

View file

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

View file

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

View file

@ -1,25 +1,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

View file

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

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

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

View file

@ -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()

View file

@ -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,
},
}

View file

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

File diff suppressed because it is too large Load diff

View file

@ -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

View file

@ -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

View file

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

View file

@ -0,0 +1,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

View file

@ -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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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

@ -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,
}

View file

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

View file

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

View file

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

View file

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

View file

@ -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"

27
test.py
View file

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

View file

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

View file

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

View file

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

View file

@ -1,30 +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)

View file

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

View file

@ -1,85 +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)