*zenbones.txt* A contrast-focused vim/neovim colorscheme ============================================================================== Table of Contents *zenbones-table-of-contents* 1. Zenbones |zenbones-zenbones| - Usage |zenbones-usage| - Configuration |zenbones-configuration| - Advanced Usage |zenbones-advanced-usage| ============================================================================== 1. Zenbones *zenbones-zenbones* **Zenflesh, Zenbones** is a vim/neovim colorscheme 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: > colorscheme zenbones " light colorscheme zenflesh " dark < If you want to make use of the lua version: > " Requires `neovim` and `rktjmp/lush.nvim` installed colorscheme zenbones-lush colorscheme zenflesh-lush " Secret https://neovim.io colorscheme colorscheme neovim < 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 `zenbones-lush` and `zenflesh-lush`. *zenbones-g:zenbones_lightness* g:zenbones_lightness Change background colors lightness. Options: `'bright'`, `'dim'`. *zenbones-g:zenflesh_darkness* g:zenflesh_darkness Change background colors darkness. Options: `'stark'`, `'warm'`. *zenbones-g:zenbones_solid_vert_split* *zenbones-g:zenflesh_solid_vert_split* g:zenflesh_solid_vert_split Default: `v:false`. Make vertical split more distinguishable background highlight. *zenbones-g:zenbones_dim_noncurrent_window* g:zenbones_dim_noncurrent_window Default: `v:false`. Make non-current window background dimmer than _Normal_. *zenbones-g:zenflesh_lighten_noncurrent_window* g:zenflesh_lighten_noncurrent_window Default: `v:false`. Make non-current window background warmer than _Normal_. *zenbones-g:zenbones_italic_comments* *zenbones-g:zenflesh_italic_comments* g:zenflesh_italic_comments Default: `v:true`. Make comments italicize. *zenbones-lightline* > let g:lightline = { \ 'colorscheme': 'zenbones', " or 'zenflesh' \ } < *zenbones-lualine* > options = { theme = 'zenbones' } -- or 'zenflesh' < ADVANCED USAGE *zenbones-advanced-usage* Zenbones is pretty extensible thanks to Lush. You can easily retrieve the colors in lua: > local theme = require "zenbones" -- or zenflesh local palette = require "zenbones.palette" print(theme.StatusLine.bg.hex) print(palette.blossom.darken(20).hex) < See also Lush’s documentation for more options. CREATE YOUR OWN COLORSCHEME ~ You can ultimately create your own colorscheme that is based on Zenbones by modifying the base palette and extending the 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 `nvim/colors/gruvbones.lua`. And it contains the following: > vim.g.colors_name = "gruvbones" -- let's base bg=dark, bg=light on zenflesh, zenbones specs respectively local base_name = vim.opt.background:get() == "dark" and "zenflesh" or "zenbones" -- reset base palette and specs package.loaded[base_name .. ".palette"] = nil package.loaded[base_name] = nil local lush = require "lush" local hsl = lush.hsl -- modify base palette (before requiring specs) -- and we can also define our own -- note: non-exhaustive copy of gruvbox palette. Ref: https://github.com/gruvbox-community/gruvbox#palette local base = require(base_name .. ".palette") local gruv if base_name == "zenbones" then base.bg = hsl "#fbf1c7" base.fg = hsl "#3c3836" gruv = { gray = hsl "#7c6f64", fg0 = hsl "#282828", fg1 = hsl "#3c3836", fg2 = hsl "#504945", fg3 = hsl "#665c54", fg4 = hsl "#7c6f64", } else base.bg = hsl "#282828" base.fg = hsl "#ebdbb2" gruv = { gray = hsl "#a89984", fg0 = hsl "#fbf1c7", fg1 = hsl "#ebdbb2", fg2 = hsl "#d5c4a1", fg3 = hsl "#d5c4a1", fg4 = hsl "#a89984", } end base.rose = hsl "#cc241d" base.leaf = hsl "#98971a" base.wood = hsl "#d79921" base.water = hsl "#458588" base.blossom = hsl "#b16286" base.sky = hsl "#689d6a" -- extend specs using Lush local theme = require(base_name) local specs = lush.extends({ theme }).with(function() return { Constant { fg = gruv.fg4, gui = "italic" }, Identifier { fg = gruv.fg2, gui = "italic" }, Special { fg = gruv.fg3, gui = "bold" }, Delimiter { fg = gruv.gray }, Comment { fg = gruv.gray, gui = "italic" }, LineNr { fg = Comment.fg }, } end) -- apply terminal colors require(base_name .. ".terminal").setup() -- include our theme file and pass it to lush to apply lush(specs) < And there you have it. Just call `colorscheme gruvbones` to use your new colorscheme. It respects `&background` and other configurations too. Also checkout the neovim <../colors/neovim.lua> colorscheme for a similar and complete example. Generated by panvimdoc vim:tw=78:ts=8:noet:ft=help:norl: