-
Notifications
You must be signed in to change notification settings - Fork 190
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
085baef
commit 5854e94
Showing
43 changed files
with
6,834 additions
and
6,811 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,268 @@ | ||
============================================================================== | ||
------------------------------------------------------------------------------ | ||
*mini.base16* | ||
*MiniBase16* | ||
Fast implementation of 'chriskempson/base16' color scheme (with Copyright | ||
(C) 2012 Chris Kempson) adapted for modern Neovim Lua plugins. | ||
Extra features: | ||
- Configurable automatic support of cterm colors (see |highlight-cterm|). | ||
- Opinionated palette generator based only on background and foreground | ||
colors. | ||
|
||
Supported highlight groups: | ||
- Builtin-in Neovim LSP and diagnostic. | ||
- Plugins (either with explicit definition or by verification that default | ||
highlighting works appropriately): | ||
- 'echasnovski/mini.nvim' | ||
- 'akinsho/bufferline.nvim' | ||
- 'anuvyklack/hydra.nvim' | ||
- 'DanilaMihailov/beacon.nvim' | ||
- 'folke/todo-comments.nvim' | ||
- 'folke/trouble.nvim' | ||
- 'folke/which-key.nvim' | ||
- 'ggandor/leap.nvim' | ||
- 'ggandor/lightspeed.nvim' | ||
- 'glepnir/dashboard-nvim' | ||
- 'glepnir/lspsaga.nvim' | ||
- 'hrsh7th/nvim-cmp' | ||
- 'justinmk/vim-sneak' | ||
- 'kyazdani42/nvim-tree.lua' | ||
- 'lewis6991/gitsigns.nvim' | ||
- 'lukas-reineke/indent-blankline.nvim' | ||
- 'neoclide/coc.nvim' | ||
- 'nvim-lualine/lualine.nvim' | ||
- 'nvim-neo-tree/neo-tree.nvim' | ||
- 'nvim-telescope/telescope.nvim' | ||
- 'p00f/nvim-ts-rainbow' | ||
- 'phaazon/hop.nvim' | ||
- 'rcarriga/nvim-dap-ui' | ||
- 'rcarriga/nvim-notify' | ||
- 'rlane/pounce.nvim' | ||
- 'romgrk/barbar.nvim' | ||
- 'simrat39/symbols-outline.nvim' | ||
- 'stevearc/aerial.nvim' | ||
- 'TimUntersberger/neogit' | ||
- 'williamboman/mason.nvim' | ||
|
||
# Setup~ | ||
|
||
This module needs a setup with `require('mini.base16').setup({})` (replace | ||
`{}` with your `config` table). It will create global Lua table | ||
`MiniBase16` which you can use for scripting or manually (with | ||
`:lua MiniBase16.*`). | ||
|
||
See |MiniBase16.config| for `config` structure and default values. | ||
|
||
This module doesn't have runtime options, so using `vim.b.minibase16_config` | ||
will have no effect here. | ||
|
||
Example: | ||
> | ||
require('mini.base16').setup({ | ||
palette = { | ||
base00 = '#112641', | ||
base01 = '#3a475e', | ||
base02 = '#606b81', | ||
base03 = '#8691a7', | ||
base04 = '#d5dc81', | ||
base05 = '#e2e98f', | ||
base06 = '#eff69c', | ||
base07 = '#fcffaa', | ||
base08 = '#ffcfa0', | ||
base09 = '#cc7e46', | ||
base0A = '#46a436', | ||
base0B = '#9ff895', | ||
base0C = '#ca6ecf', | ||
base0D = '#42f7ff', | ||
base0E = '#ffc4ff', | ||
base0F = '#00a5c5', | ||
}, | ||
use_cterm = true, | ||
plugins = { | ||
default = false, | ||
['echasnovski/mini.nvim'] = true, | ||
}, | ||
}) | ||
< | ||
# Notes~ | ||
|
||
1. This is used to create plugin's colorschemes (see |mini.nvim-color-schemes|). | ||
2. Using `setup()` doesn't actually create a |colorscheme|. It basically | ||
creates a coordinated set of |highlight|s. To create your own theme: | ||
- Put "myscheme.lua" file (name after your chosen theme name) inside | ||
any "colors" directory reachable from 'runtimepath' ("colors" inside | ||
your Neovim config directory is usually enough). | ||
- Inside "myscheme.lua" call `require('mini.base16').setup()` with your | ||
palette and only after that set |g:colors_name| to "myscheme". | ||
|
||
------------------------------------------------------------------------------ | ||
*mini-color-schemes* | ||
# Plugin colorschemes~ | ||
|
||
This plugin comes with several color schemes. All of them are a | ||
|MiniBase16| theme created with faster version of the following Lua code: | ||
> | ||
require('mini.base16').setup({ palette = palette, use_cterm = true }) | ||
< | ||
Activate them as regular |colorscheme| (for example, `:colorscheme minischeme`). | ||
|
||
## minischeme~ | ||
|
||
Blue and yellow main colors with high contrast and saturation palette. | ||
Palettes are: | ||
- For dark 'background': | ||
`MiniBase16.mini_palette('#112641', '#e2e98f', 75)` | ||
- For light 'background': | ||
`MiniBase16.mini_palette('#e2e5ca', '#002a83', 75)` | ||
|
||
## minicyan~ | ||
|
||
Cyan and grey main colors with moderate contrast and saturation palette. | ||
Palettes are: | ||
- For dark 'background': | ||
`MiniBase16.mini_palette('#0A2A2A', '#D0D0D0', 50)` | ||
- For light 'background': | ||
`MiniBase16.mini_palette('#C0D2D2', '#262626', 80)` | ||
|
||
------------------------------------------------------------------------------ | ||
*MiniBase16.setup()* | ||
`MiniBase16.setup`({config}) | ||
Module setup | ||
|
||
Setup is done by applying base16 palette to enable colorscheme. Highlight | ||
groups make an extended set from original | ||
[base16-vim](https://github.com/chriskempson/base16-vim/) plugin. It is a | ||
good idea to have `config.palette` respect the original [styling | ||
principles](https://github.com/chriskempson/base16/blob/master/styling.md). | ||
|
||
By default only 'gui highlighting' (see |highlight-gui| and | ||
|termguicolors|) is supported. To support 'cterm highlighting' (see | ||
|highlight-cterm|) supply `config.use_cterm` argument in one of the formats: | ||
- `true` to auto-generate from `palette` (as closest colors). | ||
- Table with similar structure to `palette` but having terminal colors | ||
(integers from 0 to 255) instead of hex strings. | ||
|
||
Parameters~ | ||
{config} `(table)` Module config table. See |MiniBase16.config|. | ||
|
||
Usage~ | ||
`require('mini.base16').setup({})` (replace `{}` with your `config` | ||
table; `config.palette` should be a table with colors) | ||
|
||
------------------------------------------------------------------------------ | ||
*MiniBase16.config* | ||
`MiniBase16.config` | ||
Module config | ||
|
||
Default values: | ||
> | ||
MiniBase16.config = { | ||
-- Table with names from `base00` to `base0F` and values being strings of | ||
-- HEX colors with format "#RRGGBB". NOTE: this should be explicitly | ||
-- supplied in `setup()`. | ||
palette = nil, | ||
-- Whether to support cterm colors. Can be boolean, `nil` (same as | ||
-- `false`), or table with cterm colors. See `setup()` documentation for | ||
-- more information. | ||
use_cterm = nil, | ||
-- Plugin integrations. Use `default = false` to disable all integrations. | ||
-- Also can be set per plugin (see |MiniBase16.config|). | ||
plugins = { default = true }, | ||
} | ||
< | ||
# Options ~ | ||
|
||
## Plugin integrations ~ | ||
|
||
`config.plugins` defines for which supported plugins highlight groups will | ||
be created. Limiting number of integrations slightly decreases startup time. | ||
It is a table with boolean (`true`/`false`) values which are applied as follows: | ||
- If plugin name (as listed in |mini.base16|) has entry, it is used. | ||
- Otherwise `config.plugins.default` is used. | ||
|
||
Example which will load only "mini.nvim" integration: | ||
> | ||
require('mini.base16').setup({ | ||
palette = require('mini.base16').mini_palette('#112641', '#e2e98f', 75), | ||
plugins = { | ||
default = false, | ||
['echasnovski/mini.nvim'] = true, | ||
} | ||
}) | ||
------------------------------------------------------------------------------ | ||
*MiniBase16.mini_palette()* | ||
`MiniBase16.mini_palette`({background}, {foreground}, {accent_chroma}) | ||
Create 'mini' palette | ||
|
||
Create base16 palette based on the HEX (string '#RRGGBB') colors of main | ||
background and foreground with optional setting of accent chroma (see | ||
details). | ||
|
||
# Algorithm design~ | ||
|
||
- Main operating color space is | ||
[CIELCh(uv)](https://en.wikipedia.org/wiki/CIELUV#Cylindrical_representation_(CIELCh)) | ||
which is a cylindrical representation of a perceptually uniform CIELUV | ||
color space. It defines color by three values: lightness L (values from 0 | ||
to 100), chroma (positive values), and hue (circular values from 0 to 360 | ||
degress). Useful converting tool: https://www.easyrgb.com/en/convert.php | ||
- There are four important lightness values: background, foreground, focus | ||
(around the middle of background and foreground, leaning towards | ||
foreground), and edge (extreme lightness closest to foreground). | ||
- First four colors have the same chroma and hue as `background` but | ||
lightness progresses from background towards focus. | ||
- Second four colors have the same chroma and hue as `foreground` but | ||
lightness progresses from foreground towards edge in such a way that | ||
'base05' color is main foreground color. | ||
- The rest eight colors are accent colors which are created in pairs | ||
- Each pair has same hue from set of hues 'most different' to | ||
background and foreground hues (if respective chorma is positive). | ||
- All colors have the same chroma equal to `accent_chroma` (if not | ||
provided, chroma of foreground is used, as they will appear next | ||
to each other). Note: this means that in case of low foreground | ||
chroma, it is a good idea to set `accent_chroma` manually. | ||
Values from 30 (low chorma) to 80 (high chroma) are common. | ||
- Within pair there is base lightness (equal to foreground | ||
lightness) and alternative (equal to focus lightness). Base | ||
lightness goes to colors which will be used more frequently in | ||
code: base08 (variables), base0B (strings), base0D (functions), | ||
base0E (keywords). | ||
How exactly accent colors are mapped to base16 palette is a result of | ||
trial and error. One rule of thumb was: colors within one hue pair should | ||
be more often seen next to each other. This is because it is easier to | ||
distinguish them and seems to be more visually appealing. That is why | ||
`base0D` and `base0F` have same hues because they usually represent | ||
functions and delimiter (brackets included). | ||
|
||
Parameters~ | ||
{background} `(string)` Background HEX color (formatted as `#RRGGBB`). | ||
{foreground} `(string)` Foreground HEX color (formatted as `#RRGGBB`). | ||
{accent_chroma} `(number)` Optional positive number (usually between 0 | ||
and 100). Default: chroma of foreground color. | ||
|
||
Return~ | ||
`(table)` Table with base16 palette. | ||
|
||
Usage~ | ||
`local palette = require('mini.base16').mini_palette('#112641', '#e2e98f', 75)` | ||
`require('mini.base16').setup({palette = palette})` | ||
|
||
------------------------------------------------------------------------------ | ||
*MiniBase16.rgb_palette_to_cterm_palette()* | ||
`MiniBase16.rgb_palette_to_cterm_palette`({palette}) | ||
Converts palette with RGB colors to terminal colors | ||
|
||
Useful for caching `use_cterm` variable to increase speed. | ||
|
||
Parameters~ | ||
{palette} `(table)` Table with base16 palette (same as in | ||
`MiniBase16.config.palette`). | ||
|
||
Return~ | ||
`(table)` Table with base16 palette using |highlight-cterm|. | ||
|
||
|
||
vim:tw=78:ts=8:noet:ft=help:norl: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
============================================================================== | ||
------------------------------------------------------------------------------ | ||
*mini.bufremove* | ||
*MiniBufremove* | ||
Buffer removing (unshow, delete, wipeout), which saves window layout | ||
(opposite to builtin Neovim's commands). | ||
|
||
# Setup~ | ||
|
||
This module doesn't need setup, but it can be done to improve usability. | ||
Setup with `require('mini.bufremove').setup({})` (replace `{}` with your | ||
`config` table). It will create global Lua table `MiniBufremove` which you | ||
can use for scripting or manually (with `:lua MiniBufremove.*`). | ||
|
||
See |MiniBufremove.config| for `config` structure and default values. | ||
|
||
This module doesn't have runtime options, so using `vim.b.minibufremove_config` | ||
will have no effect here. | ||
|
||
# Notes~ | ||
|
||
1. Which buffer to show in window(s) after its current buffer is removed is | ||
decided by the algorithm: | ||
- If alternate buffer (see |CTRL-^|) is listed (see |buflisted()|), use it. | ||
- If previous listed buffer (see |bprevious|) is different, use it. | ||
- Otherwise create a scratch one with `nvim_create_buf(true, true)` and use | ||
it. | ||
|
||
# Disabling~ | ||
|
||
To disable core functionality, set `g:minibufremove_disable` (globally) or | ||
`b:minibufremove_disable` (for a buffer) to `v:true`. Considering high | ||
number of different scenarios and customization intentions, writing exact | ||
rules for disabling module's functionality is left to user. See | ||
|mini.nvim-disabling-recipes| for common recipes. | ||
|
||
------------------------------------------------------------------------------ | ||
*MiniBufremove.setup()* | ||
`MiniBufremove.setup`({config}) | ||
Module setup | ||
|
||
Parameters~ | ||
{config} `(table)` Module config table. See |MiniBufremove.config|. | ||
|
||
Usage~ | ||
`require('mini.bufremove').setup({})` (replace `{}` with your `config` table) | ||
|
||
------------------------------------------------------------------------------ | ||
*MiniBufremove.config* | ||
`MiniBufremove.config` | ||
Module config | ||
|
||
Default values: | ||
> | ||
MiniBufremove.config = { | ||
-- Whether to set Vim's settings for buffers (allow hidden buffers) | ||
set_vim_settings = true, | ||
} | ||
< | ||
|
||
------------------------------------------------------------------------------ | ||
*MiniBufremove.delete()* | ||
`MiniBufremove.delete`({buf_id}, {force}) | ||
Delete buffer `buf_id` with |:bdelete| after unshowing it | ||
|
||
Parameters~ | ||
{buf_id} `(number)` Buffer identifier (see |bufnr()|) to use. Default: | ||
0 for current. | ||
{force} `(boolean)` Whether to ignore unsaved changes (using `!` version of | ||
command). Default: `false`. | ||
|
||
Return~ | ||
`(boolean)` Whether operation was successful. | ||
|
||
------------------------------------------------------------------------------ | ||
*MiniBufremove.wipeout()* | ||
`MiniBufremove.wipeout`({buf_id}, {force}) | ||
Wipeout buffer `buf_id` with |:bwipeout| after unshowing it | ||
|
||
Parameters~ | ||
{buf_id} `(number)` Buffer identifier (see |bufnr()|) to use. Default: | ||
0 for current. | ||
{force} `(boolean)` Whether to ignore unsaved changes (using `!` version of | ||
command). Default: `false`. | ||
|
||
Return~ | ||
`(boolean)` Whether operation was successful. | ||
|
||
------------------------------------------------------------------------------ | ||
*MiniBufremove.unshow()* | ||
`MiniBufremove.unshow`({buf_id}) | ||
Stop showing buffer `buf_id` in all windows | ||
|
||
Parameters~ | ||
{buf_id} `(number)` Buffer identifier (see |bufnr()|) to use. Default: | ||
0 for current. | ||
|
||
Return~ | ||
`(boolean)` Whether operation was successful. | ||
|
||
------------------------------------------------------------------------------ | ||
*MiniBufremove.unshow_in_window()* | ||
`MiniBufremove.unshow_in_window`({win_id}) | ||
Stop showing current buffer of window `win_id` | ||
|
||
Parameters~ | ||
{win_id} `(number)` Window identifier (see |win_getid()|) to use. | ||
Default: 0 for current. | ||
|
||
Return~ | ||
`(boolean)` Whether operation was successful. | ||
|
||
|
||
vim:tw=78:ts=8:noet:ft=help:norl: |
Oops, something went wrong.