Skip to content

Use which-key.nvim bindings to cycle between colorschemes.

License

Notifications You must be signed in to change notification settings

DrKJeff16/which-colorscheme.nvim

Repository files navigation

which-colorscheme.nvim

Use which-key.nvim bindings to cycle between your colorschemes.

which_colorscheme.mp4

Table of Contents


Installation

Requirements:

folke/lazy.nvim is highly recommended to install this plugin!

IMPORTANT: Load which-key.nvim and all your colorschemes BEFORE you load this plugin!

{
  'DrKJeff16/which-colorscheme.nvim',
  event = 'VeryLazy', -- IMPORTANT
  dependencies = { 'folke/which-key.nvim' },
  opts = {},
}

LuaRocks

You can also install this through LuaRocks:

luarocks install which-colorscheme.nvim # Global install
luarocks install --local which-colorscheme.nvim # Local install

Configuration

The default setup options are the following:

{
  prefix = '<leader>C', -- The prefix to your keymap
  group_name = 'Colorschemes', -- The prefix group in `which-key.nvim`
  include_builtin = false, -- Whether to include the built-in Neovim colorschemes
  custom_groups = {}, -- Custom groups for colorschemes (see the `Custom Groups` section below)
  excluded = {}, -- List of colorscheme names/variants to ignore
  grouping = {
    labels = {}, -- The labels assigned to a given group (see the `Labeling` section below)
    uppercase_groups = false, -- Whether to use uppercase groups for keymaps
    random = false, -- Whether to randomize the mappings
    inverse = false, -- Whether to map your colorschemes from z-a (if random is `true`, this does nothing)
    current_first = true, -- Whether to put the current colorscheme in the first group
  },
}

Custom Grouping

wc_showcase.mp4

If you wish to order your colorschemes manually you can use the custom_groups option:

require('which-colorscheme').setup({
  custom_groups = {
    A = { 'tokyonight', 'tokyonight-storm', 'tokyonight-moon', 'tokyonight-night', 'tokyonight-day' },
    -- Skip section B
    C = { '', 'catppuccin' }, -- Blank strings are ignored
    D = { 'foo' }, -- If `foo` is not a colorscheme it'll get skipped
  },
})

Labeling

Labeling

You can add custom group names to any desired group section:

require('which-colorscheme').setup({
  grouping = {
    labels = {
      A = 'Favorites',
      B = '', -- The default `B` group name will be used
      C = '    ', -- The default `C` group name will be used
      E = 'Extras', -- The `D` group will fall back to its default value
      F = '    Foo   ', -- Will be stripped down to `Foo`
    },
  },
})

Excluding Colorschemes

You can ignore any colorscheme variant you'd like. For example, let's say we want to ignore the light colorscheme variants, plus some built-in ones:

require('which-colorscheme').setup({
  excluded = {
    -- Built-in
    'blue',
    'darkblue',

    -- tokyonight
    'tokyonight-day',

    -- catppuccin
    'catppuccin-latte',

    -- nightfox
    'dawnfox',
    'dayfox',

    -- kanagawa
    'kanagawa-lotus',

    -- teide
    'teide-light',
  },
})

Note that you'll need to know the name of the colorscheme to begin with (the one you use in the :colorscheme command).

You can see all the colorschemes listed either by using a picker that supports it (e.g. :Telescope colorscheme for telescope).

Alternatively you can run this in your command line:

" This will print out all the installed colorschemes
:lua vim.print(vim.fn.getcompletion('', 'color'))

License

MIT

Sponsor this project