Go to file
Iron-E 6512def838
ref(colors): refine colors to match latest plugin updates
`barbar.nvim` had an update which separated buffer index colors from
their respective buffer separators colors. Additionally, `vimtex` had
an update which changed many names of its highlight groups.

This commit aims to relieve some of the visual oddities which may have
occured over the last few days, as a result of those changes.
2020-12-02 15:08:25 -05:00
colors ref(colors): refine colors to match latest plugin updates 2020-12-02 15:08:25 -05:00
doc Correct highlight_terminal example 2020-11-19 20:41:22 -05:00
lua fix: resolve functions before indexing 2020-11-25 01:25:57 -05:00
media Update preview image 2020-08-28 14:22:49 -04:00
.gitignore Added .gitignore 2019-07-28 11:32:58 +02:00
LICENSE Update directions 2020-06-19 20:49:05 -04:00
README.md Add highlite.group to README 2020-11-19 20:39:49 -05:00
setup.sh Add setup instructions 2020-10-25 13:37:36 -04:00

README.md

Default Settings Preview

lua preview

Introduction

nvim-highlite is a colorscheme template repository for Neovim 0.5+.

This template's defaults focus on:

  1. Compatability with semantic highlighting.
    • I was using colorschemes that often did not provide enough highlight groups to provide distinction between tokens.
  2. 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.

This template's design focuses on:

  1. 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 will link automatically.
  2. 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 tables.

Prerequisites

  1. Neovim 0.5+

Installation

Creating Your Own

  1. Fork this repository, or clone it with git clone https://github.com/Iron-E/nvim-highlite.
  2. Follow the instructions in colors/highlite.vim.
    • If you are on a Unix system, use the setup script like so:
    chmod +x ./setup.sh
    ./setup.sh highlite <colorscheme>
    
    Where <colorscheme> is the name of your desired colorscheme.
    • If you are on Windows, rename the files manually.

Just The Defaults

  1. Install a plugin manager such as vim-plug and use it to "plug" this repository.
    " vim-plug example
    Plug "Iron-E/nvim-highlite"
    
  2. 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
    

Usage

Examples

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

As Dependency

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

As Template

Below is an example of how to use nvim-highlite as a template.

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

FAQ

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:

Language Syntax Plugin
ALGOL sterpe/vim-algol68
C++ bfrg/vim-cpp-modern
Dart dart-lang/dart-vim-plugin
DTrace vim-scripts/dtrace-syntax-file
F# ionide/Ionide-vim
Gas Shirk/vim-gas
Git tpope/vim-git
Go fatih/vim-go
GraphViz liuchengxu/graphviz
HTML5 othree/html5
i3conf mboughaba/i3config
JSON elzr/vim-json
Java uiiaoo/java-syntax
JavaScript pangloss/vim-javascript
Julia JuliaEditorSupport/julia-vim
Kotlin udalov/kotlin-vim
LESS groenewege/vim-less
LLVM rhysd/vim-llvm
Lua tbastos/vim-lua
Markdown plasticboy/vim-markdown
MIPS vim-scripts/mips
Moonscript leafo/moonscript-vim
PlantUML aklt/plantuml-syntax
Prettier prettier/vim-prettier
Python vim-python/python-syntax
Razor adamclerk/vim-razor
RST marshallward/vim-restructuredtext
Ruby vim-ruby/vim-ruby
SCSS cakebaker/scss-syntax
SQL shmup/vim-sql-syntax
Shell arzg/vim-sh
Stylus wavded/vim-stylus
SystemD wgwoods/vim-systemd-syntax
SystemTap nickhutchinson/vim-systemtap
TOML cespare/vim-toml
TeX lervag/vimtex
Ungrammar Iron-E/vim-ungrammar
VB.NET vim-scripts/vbnet
Vim Logs MTDL9/vim-log-highlighting
XML amadeus/vim-xml
YAML stephpy/vim-yaml
YATS HerringtonDarkholme/yats

Contribution

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.