261 lines
9.6 KiB
Plaintext
261 lines
9.6 KiB
Plaintext
*zenbones.txt* A collection of contrast-based vim/neovim colorschemes
|
||
|
||
==============================================================================
|
||
Table of Contents *zenbones-table-of-contents*
|
||
|
||
1. Documentation |zenbones-documentation|
|
||
- Usage |zenbones-usage|
|
||
- Configuration |zenbones-configuration|
|
||
- Advanced Usage |zenbones-advanced-usage|
|
||
|
||
==============================================================================
|
||
1. Documentation *zenbones-documentation*
|
||
|
||
Zenbones is a collection of Vim/Neovim colorschemes designed to highlight code
|
||
using contrasts and font variations. Colors are tasked only for other roles
|
||
such as diagnostics, diffs, search matches.
|
||
|
||
USAGE *zenbones-usage*
|
||
|
||
Just apply the colorscheme as usual:
|
||
|
||
>
|
||
set termguicolors
|
||
set background=light " or dark
|
||
|
||
colorscheme zenbones
|
||
|
||
colorscheme zenwritten " Zero hue and saturation version
|
||
colorscheme neobones " https://neovim.io flavor
|
||
colorscheme vimbones " https://www.vim.org flavor
|
||
colorscheme rosebones " Rosé Pine flavor - https://rosepinetheme.com
|
||
colorscheme forestbones " Everforest flavor - https://github.com/sainnhe/everforest
|
||
colorscheme nordbones " Nord flavor - https://www.nordtheme.com/docs/colors-and-palettes
|
||
colorscheme tokyobones " Tokyo Night flavor - https://github.com/enkia/tokyo-night-vscode-theme#color-palette
|
||
colorscheme duckbones " Spaceduck flavor - https://pineapplegiant.github.io/spaceduck
|
||
<
|
||
|
||
|
||
It works pretty much the same as the first one but pretty handy when extending
|
||
or customizing the colors to your likings.
|
||
|
||
CONFIGURATION *zenbones-configuration*
|
||
|
||
Configuration is only available for Neovim. There are two ways to set
|
||
configuration. First:
|
||
|
||
>
|
||
" vimscript
|
||
let g:zenbones_solid_line_nr = v:true
|
||
let g:zenbones_darken_comments = 45
|
||
<
|
||
|
||
|
||
>
|
||
-- lua
|
||
vim.g.zenbones_solid_line_nr = true
|
||
vim.g.zenbones_darken_comments = 45
|
||
<
|
||
|
||
|
||
Second way is to set configuration is to assign a dictionary to the prefix:
|
||
|
||
>
|
||
" vimscript
|
||
let g:forestbones = #{ solid_line_nr: v:true, darken_comments: 45 }
|
||
<
|
||
|
||
|
||
>
|
||
-- lua
|
||
vim.g.forestbones = { solid_line_nr = true, darken_comments = 45 }
|
||
<
|
||
|
||
|
||
**Notes**: Flavors accept their own configuration by replacing the prefix with
|
||
the flavor name e.g. `g:rosebones_italic_comments`.
|
||
|
||
│ Option │Backgr│Defau│ Description │
|
||
│ │ ound │ lt │ │
|
||
│lightness │light │nil │Change background colors lightness. Options: │
|
||
│ │ │ │'bright', 'dim'. │
|
||
│darkness │dark │nil │Change background colors darkness. Options: '│
|
||
│ │ │ │stark', 'warm'. │
|
||
│solid_vert_spli│both │false│Solid |hl-VertSplit| background. │
|
||
│t │ │ │ │
|
||
│solid_line_nr │both │false│Solid |hl-LineNr| background. │
|
||
│ │ │ │ │
|
||
│solid_float_bor│both │false│Make |hl-FloatBorder| have a more distinguish│
|
||
│der │ │ │able background highlight. │
|
||
│darken_noncurre│light │false│Make non-current window background darker tha│
|
||
│nt_window │ │ │n _Normal_. │
|
||
│lighten_noncurr│dark │false│Make non-current window background lighter th│
|
||
│ent_window │ │ │an _Normal_. │
|
||
│italic_comments│both │true │Make comments italicize. │
|
||
│ │ │ │ │
|
||
│darken_comments│light │38 │Percentage to darken comments relative to Nor│
|
||
│ │ │ │mal bg. │
|
||
│lighten_comment│dark │38 │Percentage to lighten comments relative to No│
|
||
│s │ │ │rmal bg. │
|
||
│darken_non_text│light │25 │Percentage to darken |hl-NonText| relative to│
|
||
│ │ │ │ Normal bg. │
|
||
│lighten_non_tex│dark │30 │Percentage to lighten |hl-NonText| relative t│
|
||
│t │ │ │o Normal bg. │
|
||
│darken_line_nr │light │33 │Percentage to darken |hl-LineNr| relative to │
|
||
│ │ │ │Normal bg. │
|
||
│lighten_line_nr│dark │35 │Percentage to lighten |hl-LineNr| relative to│
|
||
│ │ │ │ Normal bg. │
|
||
│darken_cursor_l│light │3 │Percentage to darken |hl-CursorLine| relative│
|
||
│ine │ │ │ to Normal bg. │
|
||
│lighten_cursor_│dark │4 │Percentage to lighten |hl-CursorLine| relativ│
|
||
│line │ │ │e to Normal bg. │
|
||
│transparent_bac│both │false│Make background transparent. │
|
||
│kground │ │ │ │
|
||
|
||
|
||
*zenbones-g:zenbones_compat*
|
||
|
||
g:zenbones_compat Set to `1` to enable compatibility mode.
|
||
Enable in Vim.
|
||
|
||
|
||
LIGHTLINE ~
|
||
|
||
>
|
||
let g:lightline = #{ colorscheme: 'zenbones' }
|
||
<
|
||
|
||
|
||
LUALINE ~
|
||
|
||
>
|
||
require("lualine").setup {
|
||
options = { theme = "zenbones" },
|
||
}
|
||
<
|
||
|
||
|
||
ADVANCED USAGE *zenbones-advanced-usage*
|
||
|
||
Zenbones is pretty extensible thanks to Lush. You can easily retrieve the
|
||
colors in lua:
|
||
|
||
>
|
||
local theme = require "zenbones"
|
||
local palette = require "zenbones.palette"
|
||
|
||
print(theme.StatusLine.bg.hex)
|
||
print(palette.blossom.darken(20).hex)
|
||
<
|
||
|
||
|
||
EXTEND/OVERRIDE HIGHLIGHTS ~
|
||
|
||
Here’s an example of how to extend/override some highlights.
|
||
|
||
`lua/customize_zenbones.lua`:
|
||
|
||
>
|
||
local lush = require "lush"
|
||
local base = require "zenbones"
|
||
|
||
-- Create some specs
|
||
local specs = lush.parse(function()
|
||
return {
|
||
TabLine { base.TabLine, gui = "italic" }, -- setting gui to "italic"
|
||
}
|
||
end)
|
||
-- Apply specs using lush tool-chain
|
||
lush.apply(lush.compile(specs))
|
||
<
|
||
|
||
|
||
And then somewhere in your `init.vim`:
|
||
|
||
>
|
||
autocmd ColorScheme zenbones lua require "customize_zenbones"
|
||
colorscheme zenbones
|
||
<
|
||
|
||
|
||
See also Lush’s documentation
|
||
<https://github.com/rktjmp/lush.nvim#advanced-usage> for more options.
|
||
|
||
CREATE YOUR OWN COLORSCHEME ~
|
||
|
||
You can ultimately create your own colorscheme that is based on zenbones by
|
||
defining a palette and generating a specs. Best way to demonstrate this is
|
||
through an example. Let’s make a zenbones-flavored Gruvbox colorscheme called
|
||
`gruvbones`.
|
||
|
||
Let’s define our |colorscheme| in `colors/gruvbones.lua`. It contains the
|
||
following:
|
||
|
||
>
|
||
local colors_name = "gruvbones"
|
||
vim.g.colors_name = colors_name -- Required when defining a colorscheme
|
||
|
||
local lush = require "lush"
|
||
local hsluv = lush.hsluv -- Human-friendly hsl
|
||
local util = require "zenbones.util"
|
||
|
||
local bg = vim.opt.background:get()
|
||
|
||
-- Define a palette. Use `palette_extend` to fill unspecified colors
|
||
-- Based on https://github.com/gruvbox-community/gruvbox#palette
|
||
local palette
|
||
if bg == "light" then
|
||
palette = util.palette_extend({
|
||
bg = hsluv "#fbf1c7",
|
||
fg = hsluv "#3c3836",
|
||
rose = hsluv "#9d0006",
|
||
leaf = hsluv "#79740e",
|
||
wood = hsluv "#b57614",
|
||
water = hsluv "#076678",
|
||
blossom = hsluv "#8f3f71",
|
||
sky = hsluv "#427b58",
|
||
}, bg)
|
||
else
|
||
palette = util.palette_extend({
|
||
bg = hsluv "#282828",
|
||
fg = hsluv "#ebdbb2",
|
||
rose = hsluv "#fb4934",
|
||
leaf = hsluv "#b8bb26",
|
||
wood = hsluv "#fabd2f",
|
||
water = hsluv "#83a598",
|
||
blossom = hsluv "#d3869b",
|
||
sky = hsluv "#83c07c",
|
||
}, bg)
|
||
end
|
||
|
||
-- Generate the lush specs using the generator util
|
||
local generator = require "zenbones.specs"
|
||
local base_specs = generator.generate(palette, bg, generator.get_global_config(colors_name, bg))
|
||
|
||
-- Optionally extend specs using Lush
|
||
local specs = lush.extends({ base_specs }).with(function()
|
||
return {
|
||
Statement { base_specs.Statement, fg = palette.rose },
|
||
Special { fg = palette.water },
|
||
Type { fg = palette.sky, gui = "italic" },
|
||
}
|
||
end)
|
||
|
||
-- Pass the specs to lush to apply
|
||
lush(specs)
|
||
|
||
-- Optionally set term colors
|
||
require("zenbones.term").apply_colors(palette)
|
||
<
|
||
|
||
|
||
And there you have it. Just call `colorscheme gruvbones` to use your new
|
||
colorscheme. It respects `&background` and other configurations too.
|
||
|
||
Also checkout the neobones <../colors/neobones.lua> and rosebones
|
||
<../colors/rosebones.lua> colorscheme for a similar and complete example.
|
||
|
||
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>
|
||
|
||
vim:tw=78:ts=8:noet:ft=help:norl:
|