nvim-highlite
is a colorscheme template repository for Neovim 0.5+.
This template's defaults focus on:
- Compatability with semantic highlighting.
- I was using colorschemes that often did not provide enough highlight groups to provide distinction between tokens.
- Visibility in any range of blue-light.
- I use
redshift
often, and many colorschemes did not allow for me to see when I had lower color temperatures.
- I use
This template's design focuses on:
- Ease of use and rapid development.
- New features may simply be integrated with current configurations, rather than rewritten over them.
- Merging with the upstream repository is simplified by GitHub, allowing you to select what new defaults to add.
- It provides a large supply of defaults for plugins and programming languages.
- Define a smaller set of "categorical" highlights (see Neovim's
group-name
help page) and many more willlink
automatically.
- Define a smaller set of "categorical" highlights (see Neovim's
- Inversion of Control
- Changes made to the highlighting algorithm won't affect how you write your colorscheme.
- New highlight group attributes which are unaccounted for in older versions will simply be ignored without errors due to Lua's
table
s.
- Neovim 0.5+
- Fork this repository, or clone it with
git clone https://github.com/Iron-E/nvim-highlite
. - Follow the instructions in
colors/highlite.vim
.- If you are on a Unix system, use the setup script like so:
Wherechmod +x ./setup.sh ./setup.sh highlite <colorscheme>
<colorscheme>
is the name of your desired colorscheme.- If you are on Windows, rename the files manually.
- Install a plugin manager such as
vim-plug
and use it to "plug" this repository." vim-plug example Plug "Iron-E/nvim-highlite"
- Specify this colorscheme as your default colorscheme in the
init.vim
:" Enable 24-bit color output. Only do this IF your environment supports it. " This plugin is fully compatible with 8-bit, 16-bit, and 24-bit colors. set termguicolors " Use the colorscheme colorscheme highlite
This repository in itself is an example of how to use nvim-highlite
. Aside from this, the following colorschemes are built using nvim-highlite
:
- (if you use this, open an issue and I'll add it here!)
Below is an example of how to use nvim-highlite
as a dependency.
- See
:h highlite-usage
for more.
-- Import nvim-highlite
local highlite = require('highlite')
-- First, define some colors
local red = {'#FF0000', 1, 'red'}
local black = {'#000000', 0, 'black'}
local white = {'#FFFFFF', 255, 'white'}
-- Highlight 'Identifier'
highlite.highlight('Identifier', {bg=red, fg=black, style='bold'})
-- Highlight 'Function' conditionally according to background color.
highlite.highlight('Function', {bg=black, fg=red, light={bg=white}})
-- Link 'Example' to 'Identifier'
highlite.highlight('Example', 'Identifier')
-- You can also reference specific attributes of another highlight group.
highlite.highlight('AnotherExample', {bg=highlite.group'SpellBad'.bg, fg=white})
Below is an example of how to use nvim-highlite
as a template.
- See
highlite.vim
for more.
-- First, define some colors
local red = {'#FF0000', 1, 'red'}
local black = {'#000000', 0, 'black'}
local white = {'#FFFFFF', 255, 'white'}
-- Next define some highlight groups.
local highlight_groups = {
-- Any field which can be set to "NONE" doesn't need to be set, it will be automatically assumed to be "NONE".
Identifier = {bg=red, fg=black, style='bold'},
-- If your colorscheme should respond to multiple background settings, you can do that too:
Function = {bg=black, fg=red, light={bg=white}},
--[[ Note that light/dark differentiation is completely optional. ]]
-- You can also reference specific attributes of another highlight group.
SomethingElse = function(self) return {fg=self.Identifier.fg, bg=self.Function.bg} end,
}
-- The rest is mostly handled by the template.
Why am I receiving
E5108: Error executing lua [string ":lua"]:1: module '<colorscheme>' not found
?
Ensure your colorscheme's base folder is in Neovim's rtp
before sourcing.
What syntax files should I use for
X
language?
You can either use nvim-treesitter
, nvim-polyglot
, or one of the following:
This repository is looking for contributions! The following things are appreciated:
- More default support for plugins, languages, etc.
- Setup scripts for Windows.
If you would like to contribute something, and you aren't sure how, open a ticket! I'd love to help you help me.