A semantic coloring code colorscheme for NeoVim ported from Eva-Theme
Supports both Dark and Light modes, with four styles available for each mode: Normal, Bold, Italic, and Italic Bold.
{
'sharpchen/Eva-Theme.nvim',
lazy = false,
priority = 1000,
}
colo Eva-Dark " or any other variant
" colo Eva-Light
" colo Eva-Dark-Bold
" colo Eva-Light-Bold
" colo Eva-Dark-Italic
" colo Eva-Light-Italic
" colo Eva-Dark-Italic-Bold
" colo Eva-Light-Italic-Bold
vim.cmd('colo Eva-Dark') -- or any variant
Specifiy colors for dark and light variants, specified values will be taken while the rest remains default.
All highlight groups uses certain overrided color will be affected, something unexpected might happen. To override more specificly, use override_highlight
For palette structure, see: palette.lua
require('Eva-Theme').setup({
override_palette = {
dark = {
operator = '#RRGGBB'
git = {
diffAdded = '#RRGGBB'
}
},
light = {
declarative = '#RRGGBB'
}
}
})
To customize any highlight group for different variants, you can put function callbacks or tables of key-value pair inside override_highlight
.
require('Eva-Theme').setup({
override_highlight = {
dark = {
['@foo'] = { fg = '#RRGGBB', bg = '#RRGGBB' },
},
light = {
['@foo'] = { fg = '#RRGGBB', bg = '#RRGGBB' },
},
['@foo'] = function(variant)
return { fg = require('Eva-Theme.utils').is_dark(variant) and '#RRGGBB' or '#RRGGBB' }
end,
},
})
This port was intented to respect the upstream where operators got different colors by their usages.
While treesitter parsers generally don't classify operator into different usages, so there's no much I can do.
If you find ambiguity between operator and type(pointer type T*
for example), I suggest customize by yourself.
This is what I prefer:
require('Eva-Theme').setup({
override_palette = {
dark = {
operator = require('Eva-Theme.palette').dark_base.logical,
},
light = {
operator = require('Eva-Theme.palette').light_base.logical,
},
},
)
See: CONTRIBUTING.md