Note
This is a continuation of the original work from WittyJudge: https://github.com/WIttyJudge/gruvbox-material.nvim
A port of gruvbox-material colorscheme for Neovim
written in Lua. It does not aim to be 100% compatible with the mentioned repository, but rather
focuses on keeping the existing scheme stable and to support popular plugins. This colorscheme
supports both dark
and light
themes, based on configured background, and harder or softer
contrasts.
Table of Contents:
- Supported Plugins:
- Treesitter
- Telescope
- LSP Diagnostics
- Nvim Tree
- NERDTree
- Startify
- vim-gitgutter
- undotree
- Vista.vim
- Hop
- WhichKey
- indentLine
- Indent Blankline
- nvim-notify
- vim-illuminate
- nvim-cmp
- neorg
- headlines.nvim
- And many other plugins you can find here
Please feel free to open an issue if you want some features or other plugins to be included.
Note
This plugin requires Neovim >= 0.5.0
Install via your favourite package manager:
Plug 'f4z3r/gruvbox-material.nvim'
use 'f4z3r/gruvbox-material.nvim'
{
'f4z3r/gruvbox-material.nvim',
name = 'gruvbox-material',
lazy = false,
priority = 1000,
opts = {},
},
Nix package with home-manager
programs.neovim = {
enable = true;
# ...
plugins = with pkgs.vimPlugins; [
# ...
{
type = "lua";
plugin = gruvbox-material-nvim;
config = ''require('gruvbox-material').setup()'';
}
];
};
Load the color scheme and define the desired options:
-- values shown are defaults and will be used if not provided
require('gruvbox-material').setup({
italics = true, -- enable italics in general
contrast = "medium", -- set contrast, can be any of "hard", "medium", "soft"
comments = {
italics = true, -- enable italic comments
},
background = {
transparent = false, -- set the background to transparent
},
float = {
force_background = false, -- force background on floats even when background.transparent is set
background_color = nil, -- set color for float backgrounds. If nil, uses the default color set
-- by the color scheme
},
signs = {
highlight = true, -- whether to highlight signs
},
customize = nil, -- customize the theme in any way you desire, see below what this
-- configuration accepts
})
In the configuration, you can set customize
to a function to modify the theme on the fly. This
value accepts a function that takes a highlight group name and some options, and returns some
options.
The function signature is:
fun(group: string, options: table): table
Where both the options table and the return table are options as described in the
nvim_set_hl
val
parameter.
For instance, in order to disable bold usage on the entire color scheme, you can use
require('gruvbox-material').setup({
customize = function(_, o)
o.bold = false
return o
end,
})
Or if you want to change the coloring from a specific highlight group, in this case set the current line number to a bold orange instead of the default grey:
-- get colors from the colorscheme for current background and "medium" contrast
local colors = require("gruvbox-material.colors").get(vim.o.background, "medium")
require('gruvbox-material').setup({
customize = function(g, o)
if g == "CursorLineNr" then
o.link = nil -- wipe a potential link, which would take precedence over other
-- attributes
o.fg = colors.orange -- or use any color in "#rrggbb" hex format
o.bold = true
end
return o
end,
})