9.5 KiB
Solarized is a sixteen color palette (eight monotones, eight accent colors) designed for use with terminal and gui applications. click here to learn more
Features
- Support for Treesitter
- Support for Semantic highlight
- Customizability: styles, colors and highlights can all be modified
- Plugin compatibility
- Provides users with the option to enable or disable highlight groups
Requirements
Before using the Solarized Colorscheme, please make sure you have the following requirements installed:
Neovim v0.9.1+- nvim-treesitter
Install from package manager
Download using your preferred package manager.
{
'maxmx03/solarized.nvim',
lazy = false,
priority = 1000,
config = function()
vim.o.background = 'dark' -- or 'light'
vim.cmd.colorscheme 'solarized'
end,
},
use {
'maxmx03/solarized.nvim',
config = function()
vim.o.background = 'dark' -- or 'light'
vim.cmd.colorscheme 'solarized'
end
}
Manual Installation
To manually install Solarized, follow these steps:
- Download the stable release of Solarized.
- Extract the contents of the release.
- Locate the following folders in the extracted files:
after,colors,lua,plugin. - Copy these folders to the
~/.config/nvimdirectory.
Help
Use :h solarized.nvim.txt to get some help
Commands
:Solarized colors- Display the Solarized palette in a new buffer:Solarized zen- Removes highlight colors, emphasizing important code segments.
Default Config
vim.o.background = 'dark'
-- default config
require('solarized').setup({
transparent = false, -- enable transparent background
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,
semantic = true,
syntax = true,
telescope = true,
tree = true,
treesitter = true,
todo = true,
whichkey = true,
mini = true,
},
highlights = {},
colors = {},
theme = 'default', -- or 'neosolarized' or 'neo' for short
})
vim.cmd.colorscheme = 'solarized'
Config Themes
Solarized offers two themes: the default Solarized theme and Neo. These themes provide different visual styles to enhance your experience.
require('solarized').setup({
theme = 'neo' -- or comment to use solarized default theme.
})
Config Styles
The styles config allows you to customize the style of a highlight
group.
require('solarized').setup({
styles = {
comments = { italic = true, bold = false },
functions = { italic = true },
variables = { italic = false },
}
})
Config Highlights
The highlights config allows you to customize the highlights groups.
example:
require('solarized').setup {
highlights = function (colors, colorhelper)
local darken = colorhelper.darken
local lighten = colorhelper.lighten
local blend = colorhelper.blend
return {
LineNr = { fg = c.base1, bg = c.base02 },
CursorLineNr = { bg = c.base02 },
CursorLine = { bg = c.base02 },
Function = { italic = false },
Visual = { bg = c.cyan },
CmpKindBorder = { fg = c.base01, bg = c.base04 }
}
end
}
Config Colors
The colors config allows you to extend or modify the color palette used by
solarized.
example:
require('solarized').setup {
colors = function(colors, colorhelper)
local darken = colorhelper.darken
local lighten = colorhelper.lighten
local blend = colorhelper.blend
return {
fg = '#fff', -- output: #ffffff
bg = darken(colors.base03, 10)
}
end,
highlights = function(colors)
return {
Normal = { fg = colors.fg, bg = colors.bg }
}
end
}
Config Enables
The enables config allows you to enable or disable solarized support for spefic plugins or neovim's default highlights
example:
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
}
}
Lualine
require('lualine').setup {
options = {
theme = 'solarized',
disabled_filetypes = {
'NvimTree',
},
},
}
Alternatively, to utilize Lualine's Solarized theme:
require('lualine').setup {
options = {
theme = require('lualine.themes.solarized')
}
}
To use the Solarized theme showcased in the screenshot for Lualine click here
Barbecue
require('barbecue').setup {
theme = 'solarized',
}
Api
You can utilize useful functions to customize your Neovim plugins.
Get Colors
local solarized_palette = require('solarized.palette')
local colors = solarized_palette.get_colors()
Colorhelper
local colorhelper = require('solarized.utils.colors')
-- Convert a hex color code to RGB
colorhelper.hex_to_rgb('#ffffff')
-- Darken a color by a specified percentage
colorhelper.darken('#ffffff', 100)
-- Lighten a color by a specified percentage
colorhelper.lighten('#000000', 100)
-- Blend two colors with a specified ratio
colorhelper.blend('#ffffff', '#000000', 0.15)
Contributing
Thank you for your interest in contributing to this project! To ensure a smooth collaboration, please follow the guidelines below:
-
Branching: Make your changes on the
devbranch. Avoid making direct changes to themainbranch. -
Testing: Before submitting a pull request, run the
./test.pyscript to ensure that your changes pass all necessary tests. This step helps maintain the quality and stability of the project. Ensure that the following dependencies are installed for running tests:sudo apt install luarocks sudo luarocks install luacheck sudo luarocks install vusted cargo install stylua./test.pyok 1 - Color Conversions Convert hex to RGB ok 2 - Color Conversions Convert RGB to hex ok 3 - Color Conversions Darken the color by percentage ok 4 - Color Conversions Lighten the color by percentage ok 5 - Color Conversions Blend colors ok 6 - Configuration Default configuration ok 7 - Configuration Unique configuration table instances ok 8 - Configuration Extend default configuration ok 9 - Initialization Loads without encountering any errors ok 10 - Initialization Background is set to light ok 11 - Palette Extend solarized color palette ok 12 - Palette Correct any invalid colors when extending the solarized palette ok 13 - Setup Customizing Highlight Groups ok 14 - Setup Changing Comment Style ok 15 - Setup Changing Function Style ok 16 - Setup Customizable Highlight Groups Without Losing Previous Configuration ok 17 - Setup Ability to Change the Default Theme 1..17 # Success: 17 -
Pull Request: When submitting a pull request, select the
devbranch as the target branch. This ensures that your changes will be merged into thedevbranch for further review and integration. -
Provide Details: Provide a clear and descriptive title and description for your pull request, explaining the purpose and scope of your changes.
-
Review Process: Wait for the maintainer to review your pull request. The maintainers will review your changes before merging.
-
Final Approval: Once your changes have been reviewed and approved, the project maintainer will handle merging your changes into the
mainbranch.
Designed by
Ethan Schoonover

