Kimbox

Kimbox is a dark colorscheme for Neovim with builtin treesitter support. It is my variation of the original Kimbie Dark colorscheme.

The colors may look duller in the images provided, though they will not be whenever the colorscheme is actually loaded. I've noticed that many other colorschemes seem brighter than what their images show.

Installation

Plug 'lmburns/kimbox'

colorscheme kimbox
-- require("kimbox").load() == colorscheme kimbox
use({ "lmburns/kimbox", config = [[require("kimbox").load()]] })
-- or
use({
  "lmburns/kimbox",
  config = function()
      require("kimbox").setup({
          -- options
      })
      require("kimbox").load()
    end
})
-- Colors can be accessed with
local c = require("kimbox.bufferline").colors()

-- Theme itself
local t = require("kimbox.bufferline").theme()

require("bufferline").setup(
  -- configuration stuff
  highlights = require("kimbox.bufferline").theme()
)
-- Colors can be accessed with
local c = require("kimbox.lualine").colors()

-- Theme itself
local t = require("kimbox.lualine").theme()

require("lualine").setup(
  -- configuration stuff
  theme = 'kimbox' -- 'auto' works as well
)

Color

#39260E #291804 #EF1D55 #DC3958 #FF5813 #FF9500 #819C3B
#39260E #291804 #EF1D55 #DC3958 #FF5813 #FF9500 #819C3B
#7EB2B1 #4C96A8 #98676A #A06469 #7F5D38 #A89984 #D9AE80
#7EB2B1 #4C96A8 #98676A #A06469 #7F5D38 #A89984 #D9AE80

Options (Lua)

-- These options can also be set using:
vim.g.kimbox_config = {
  -- ...options from above
}

require("kimbox").setup({
  -- Main options --
  style = "ocean", -- choose between 'dark', 'darker', 'cool', 'deep', 'warm', 'warmer' and 'light'
  -- medium: #231A0C
  -- ocean: #221A02
  -- medium: #231A0C
  -- deep: #0f111B
  -- darker:#291804

  toggle_style_key = "<Leader>ts",
  toggle_style_list = { "medium", "ocean", "vscode", "deep", "darker" }, -- or require("kimbox").bgs_list

  -- See below (New Lua Treesitter Highlight Groups) for an explanation
  langs08 = true,

  -- Used with popup menus (coc.nvim mainly) --
  popup = {
    background = false, -- use background color for pmenu
  },

  -- Plugins Related --
  diagnostics = {
    background = true, -- use background color for virtual text
  }

  -- General formatting --
  allow_bold = true,
  allow_italic = false,
  allow_underline = false,
  allow_undercurl = true,
  allow_reverse = false,

  transparent = false, -- don't set background
  term_colors = true, -- if true enable the terminal
  ending_tildes = false, -- show the end-of-buffer tildes


  -- Custom Highlights --
  colors = {}, -- Override default colors
  highlights = {}, -- Override highlight groups
  -- Plugins or languages that can be disabled
  -- View them with require("kimbox.highlights").{langs,plugins}
  disabled = {
      langs = {},
      plugins = {},
      langs08 = {} -- Capture groups only present on nightly release (see below)
  },

  run_before = nil, -- Run a function before the colorscheme is loaded
  run_after = nil -- Run a function after the colorscheme is loaded
})

require("kimbox").load()

Options (vimscript)

" an example
let g:kimbox_config = {
    \ 'allow_reverse': v:false,
    \ 'popup': {'background': v:false},
    \ 'transparent': v:false,
    \ 'allow_bold': v:true,
    \ 'toggle_style_list': [
    \   'medium',
    \   'ocean',
    \   'vscode',
    \   'deep',
    \   'darker'
    \ ],
    \ 'toggle_style_key': '<Leader>ts',
    \ 'colors': [],
    \ 'allow_italic': v:false,
    \ 'diagnostics': {'background': v:true},
    \ 'ending_tildes': v:false,
    \ 'allow_underline': v:false,
    \ 'toggle_style_index': 0,
    \ 'allow_undercurl': v:false,
    \ 'highlights': [],
    \ 'style': 'ocean',
    \ 'loaded': v:true,
    \ 'term_colors': v:true
\ }

colorscheme kimbox

Overriding highlight groups

require("kimbox").setup({
  colors = {
    bright_orange = "#ff8800",    -- define a new color
    green = '#00ffaa',            -- redefine an existing color
    myblue = '#418292'
  },
  highlights = {
    TSKeyword = {fg = '$green'},
    TSString = {fg = '$bright_orange', bg = '#00ff00', gui = 'bold'},
    TSFunction = {fg = '#0000ff', sp = '$cyan', gui = 'underline,italic'},
    ["@function.macro.lua"] = {fg = '$myblue', sp = '$cyan', gui = 'underline,italic'}
  }
})

New Lua Treesitter Highlight Groups

See :h lua-treesitter-highlight-groups to a full explanation.

After the commit 030b422d1, highlight groups were changed in the following pattern:

This feature will not yet be enabled by default. If you wish to use this colorscheme and wish to have the exact same colors as the highlight groups that were present before the aforementioned commit, set the configuration feature langs08 to true in your configuration. This feature will eventually be this colorscheme's default settings.

Filetype Support

Treesitter is preferred for most file types (not Zsh). All of the following languages have been manually configured.

Support
  • Bash/Dash

  • C/C++

  • Clojure

  • CoffeeScript

  • Dart

  • Elixir

  • Erlang

  • Go

  • Haskell

  • HTML

  • Javascript

  • JavascriptReact TypescriptReact

  • Kotlin

  • Lua

  • OCaml

  • ObjectiveC

  • PHP

  • Perl

  • Python

  • R

  • Ruby

  • Rust

  • Scala

  • Solidity

  • Swift

  • Teal

  • Typescript

  • Vimscript

  • Zig

  • Zsh

  • CSS

  • Help pages (Vim)

  • Latex

  • Markdown

  • Matlab

  • SCSS

  • Dosini

  • Git Commit

  • JSON

  • Makefile

  • Ron (Rust Object Notation)

  • TOML

  • YAML

Plugin Support

Support

Name

The name came about because I had originally thought I was going to create a combination of the kimbie dark and gruvbox colorschemes. It's too late to change it now.

Extras

TODO

Thanks to