Skip to content

Latest commit

 

History

History
253 lines (202 loc) · 11.9 KB

mini-hues.md

File metadata and controls

253 lines (202 loc) · 11.9 KB

GitHub license

Generate configurable color scheme

See more details in Features and help file.


⦿ This is a part of mini.nvim library. Please use this link if you want to mention this module.

⦿ All contributions (issues, pull requests, discussions, etc.) are done inside of 'mini.nvim'.

⦿ See the repository page to learn about common design principles and configuration recipes.


If you want to help this project grow but don't know where to start, check out contributing guides of 'mini.nvim' or leave a Github star for 'mini.nvim' project and/or any its standalone Git repositories.

Demo

demo-hues.mp4

Sample screenshots of 'randomhue' color scheme which uses 'mini.hues' with randomly generated background and foreground of same hue (color will change on every :colorscheme randomhue call):

Dark purple Light purple

Dark azure Light azure

Dark green Light green

Dark orange Light orange

Example configurations

-- Choose background and foreground
require('mini.hues').setup({ background = '#351721', foreground = '#cdc4c6' }) -- red
require('mini.hues').setup({ background = '#361a0d', foreground = '#cdc5c1' }) -- orange
require('mini.hues').setup({ background = '#2c2101', foreground = '#c9c6c0' }) -- yellow
require('mini.hues').setup({ background = '#17280e', foreground = '#c4c8c2' }) -- green
require('mini.hues').setup({ background = '#002923', foreground = '#c0c9c7' }) -- cyan
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc' }) -- azure
require('mini.hues').setup({ background = '#19213a', foreground = '#c4c6cd' }) -- blue
require('mini.hues').setup({ background = '#2b1a33', foreground = '#c9c5cb' }) -- purple

-- Different number of non-base hues
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', n_hues = 6 })
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', n_hues = 4 })
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', n_hues = 2 })
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', n_hues = 0 })

-- Different text saturation
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', saturation = 'low' })
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', saturation = 'lowmedium' })
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', saturation = 'medium' })
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', saturation = 'mediumhigh' })
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', saturation = 'high' })

-- Choose accent color
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', accent = 'yellow' })
require('mini.hues').setup({ background = '#002734', foreground = '#c0c8cc', accent = 'blue' })

Features

  • Required to set two base colors: background and foreground. Their shades and other non-base colors are computed to be as much perceptually different as reasonably possible.

  • Configurable:

    • Number of hues used for non-base colors (from 0 to 8).
    • Saturation level ('low', 'lowmedium', 'medium', 'mediumhigh', 'high').
    • Accent color used for some selected UI elements.
    • Plugin integration (can be selectively enabled for faster startup).
  • Random generator for base colors. Powers randomhue color scheme.

  • Lua function to compute palette used in color scheme.

Supported highlight groups:

Installation

This plugin can be installed as part of 'mini.nvim' library (recommended) or as a standalone Git repository.

There are two branches to install from:

  • main (default, recommended) will have latest development version of plugin. All changes since last stable release should be perceived as being in beta testing phase (meaning they already passed alpha-testing and are moderately settled).
  • stable will be updated only upon releases with code tested during public beta-testing phase in main branch.

Here are code snippets for some common installation methods (use only one):

With mini.deps
Github repo Branch Code snippet
'mini.nvim' library Main Follow recommended 'mini.deps' installation
Stable
Standalone plugin Main add('echasnovski/mini.hues')
Stable add({ source = 'echasnovski/mini.hues', checkout = 'stable' })
With folke/lazy.nvim
Github repo Branch Code snippet
'mini.nvim' library Main { 'echasnovski/mini.nvim', version = false },
Stable { 'echasnovski/mini.nvim', version = '*' },
Standalone plugin Main { 'echasnovski/mini.hues', version = false },
Stable { 'echasnovski/mini.hues', version = '*' },
With junegunn/vim-plug
Github repo Branch Code snippet
'mini.nvim' library Main Plug 'echasnovski/mini.nvim'
Stable Plug 'echasnovski/mini.nvim', { 'branch': 'stable' }
Standalone plugin Main Plug 'echasnovski/mini.hues'
Stable Plug 'echasnovski/mini.hues', { 'branch': 'stable' }

Important: don't forget to call require('mini.hues').setup() with background and foreground fields to enable its functionality.

Note: if you are on Windows, there might be problems with too long file paths (like error: unable to create file <some file name>: Filename too long). Try doing one of the following:

  • Enable corresponding git global config value: git config --system core.longpaths true. Then try to reinstall.
  • Install plugin in other place with shorter path.

Default config

-- No need to copy this inside `setup()`. Will be used automatically.
{
  -- **Required** base colors as '#rrggbb' hex strings
  background = nil,
  foreground = nil,

  -- Number of hues used for non-base colors
  n_hues = 8,

  -- Saturation. One of 'low', 'lowmedium', 'medium', 'mediumhigh', 'high'.
  saturation = 'medium',

  -- Accent color. One of: 'bg', 'fg', 'red', 'orange', 'yellow', 'green',
  -- 'cyan', 'azure', 'blue', 'purple'
  accent = 'bg',

  -- Plugin integrations. Use `default = false` to disable all integrations.
  -- Also can be set per plugin (see |MiniHues.config|).
  plugins = { default = true },
}

Similar plugins