Files
zenbones-theme/doc/zenbones.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

181 lines
4.4 KiB
Markdown
Raw Normal View History

2021-09-18 16:11:00 +08:00
# Zenbones
2021-09-18 16:07:20 +08:00
2021-09-18 16:11:00 +08:00
**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.
2021-09-18 16:07:20 +08:00
## Usage
Just apply the colorscheme as usual:
```vim
colorscheme zenbones " light
colorscheme zenflesh " dark
```
If you want to make use of the lua version:
```vim
" Requires `neovim` and `rktjmp/lush.nvim` installed
colorscheme zenbones-lush
colorscheme zenflesh-lush
2021-09-21 19:29:37 +08:00
2021-10-04 15:44:31 +08:00
" https://neovim.io flavor
2021-09-21 19:29:37 +08:00
colorscheme neovim
2021-10-04 15:44:31 +08:00
" Rosé Pine flavor - https://rosepinetheme.com
colorscheme rosebones
2021-09-18 16:07:20 +08:00
```
It works pretty much the same as the first one but pretty handy when extending
or customizing the colors to your likings.
## Configuration
Configuration is only available for `zenbones-lush` and `zenflesh-lush`.
#### g:zenbones_lightness
Change background colors lightness. Options: `'bright'`, `'dim'`.
#### g:zenflesh_darkness
Change background colors darkness. Options: `'stark'`, `'warm'`.
#### g:zenbones_solid_vert_split
#### g:zenflesh_solid_vert_split
Default: `v:false`. Make vertical split more distinguishable background
highlight.
2021-09-18 16:07:20 +08:00
#### g:zenbones_dim_noncurrent_window
2021-09-18 16:16:25 +08:00
Default: `v:false`. Make non-current window background dimmer than _Normal_.
2021-09-18 16:07:20 +08:00
#### g:zenflesh_lighten_noncurrent_window
2021-09-18 16:16:25 +08:00
Default: `v:false`. Make non-current window background warmer than _Normal_.
2021-09-18 16:07:20 +08:00
#### g:zenbones_italic_comments
#### g:zenflesh_italic_comments
2021-10-01 07:41:03 +08:00
Default: `v:true`. Make comments italicize.
#### lightline
```vim
let g:lightline = {
\ 'colorscheme': 'zenbones', " or 'zenflesh'
\ }
```
#### lualine
```lua
options = { theme = 'zenbones' } -- or 'zenflesh'
```
2021-09-18 16:07:20 +08:00
## Advanced Usage
Zenbones is pretty extensible thanks to Lush. You can easily retrieve the colors
in lua:
```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](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
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](https://neovim.io/doc/user/syntax.html#:colorscheme) in
`nvim/colors/gruvbones.lua`. And it contains the following:
```lua
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.
2021-09-22 18:26:55 +08:00
Also checkout the [neovim](../colors/neovim.lua) colorscheme for a similar and
complete example.