2020-07-16 01:37:03 +00:00
|
|
|
|
-- This file should be edited by the user. Read the instructions of each section and then edit them as desired.
|
2020-06-25 20:45:31 +00:00
|
|
|
|
--[[ Highlite, a Neovim colorscheme template.
|
|
|
|
|
* Author: Iron-E (https://github.com/Iron-E)
|
2022-03-13 19:41:41 +00:00
|
|
|
|
* Repository: https://github.com/Iron-E/nvim-highlite
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
2020-09-05 16:35:42 +00:00
|
|
|
|
Initially forked from vim-rnb, a Vim colorsheme template:
|
2020-06-25 20:45:31 +00:00
|
|
|
|
* Author: Romain Lafourcade (https://github.com/romainl)
|
|
|
|
|
* Canonical URL: https://github.com/romainl/vim-rnb
|
2022-03-13 19:41:41 +00:00
|
|
|
|
]] --[[ Introduction
|
2020-07-02 17:06:31 +00:00
|
|
|
|
This template is designed to help Neovim users create their own colorschemes without much effort.
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
2020-07-02 17:06:31 +00:00
|
|
|
|
You will not need any additional tooling to run this file. Just open it in Neovim and follow the instructions.
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
|
|
|
|
The process is divided in five steps:
|
|
|
|
|
1. Rename the template,
|
|
|
|
|
2. Edit your colorscheme's information,
|
|
|
|
|
3. Define your colors,
|
|
|
|
|
4. Define your highlight groups and links, and
|
|
|
|
|
5. Sourcing your colorscheme.
|
2022-03-13 19:41:41 +00:00
|
|
|
|
]] --[[ Step 1: Renaming
|
2020-07-02 17:06:31 +00:00
|
|
|
|
* If this file is distributed with a colorscheme it's probably already named correctly
|
|
|
|
|
and you can skip this step.
|
|
|
|
|
* If you forked/cloned/copied this repository to create your own colorscheme, you will have to
|
|
|
|
|
rename this template to match the name of your colorscheme.
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
|
|
|
|
NOTE: Neovim doesn't really care about whitespace in the name of the colorscheme but it does for
|
|
|
|
|
filenames so make sure your filename doesn't have any whitespace character.
|
|
|
|
|
|
|
|
|
|
| colorscheme name | module name | template filename |
|
|
|
|
|
|:-----------------:|:-----------:|:-----------------:|
|
|
|
|
|
| foobar | foobar | foobar.lua |
|
2020-09-05 16:35:42 +00:00
|
|
|
|
| foo-bar | foo_bar | foo_bar.lua |
|
|
|
|
|
| foo bar | foo_bar | foo_bar.lua |
|
2020-06-25 20:45:31 +00:00
|
|
|
|
| foo_bar | foo_bar | foo_bar.lua |
|
2020-07-02 17:06:31 +00:00
|
|
|
|
|
|
|
|
|
Rename the following files:
|
2021-09-06 11:58:30 +00:00
|
|
|
|
* `colors/paper-tonic.vim`
|
|
|
|
|
* `lua/paper-tonic.lua`
|
2020-07-02 17:06:31 +00:00
|
|
|
|
|
2021-09-06 11:58:30 +00:00
|
|
|
|
Where 'paper-tonic' is the name of your colorscheme.
|
2020-09-05 16:35:42 +00:00
|
|
|
|
|
|
|
|
|
TIP: If you are on a Unix-based system (or have WSL on Windows) you can use the setup script at the root of this repo.
|
|
|
|
|
See the README for more details.
|
2022-03-13 19:41:41 +00:00
|
|
|
|
]] --[[ Step 2: Information
|
2020-09-05 15:30:54 +00:00
|
|
|
|
In this step you will define information that helps Neovim process:
|
|
|
|
|
|
|
|
|
|
1. How users access your colorscheme;
|
|
|
|
|
2. How your colorscheme should be rendered.
|
2022-03-13 19:41:41 +00:00
|
|
|
|
]] -- This is the name of your colorscheme which will be used as per |g:colors_name|.
|
2021-09-06 11:58:30 +00:00
|
|
|
|
vim.g.colors_name = 'paper-tonic'
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
|
|
|
|
--[[ Step 3: Colors
|
|
|
|
|
Next you will define all of the colors that you will use for the color scheme.
|
|
|
|
|
|
|
|
|
|
Each one should be made up of three parts:
|
|
|
|
|
|
|
|
|
|
```lua
|
|
|
|
|
<color name> = { -- Give each color a distinctive name.
|
|
|
|
|
'#<hex color code>', -- Hexadecimal color used in GVim/MacVim or 'NONE'.
|
2020-09-05 15:30:54 +00:00
|
|
|
|
<16-bit color code>, -- Integer 0–255 used by terminals supporting 256 colors or 'NONE'.
|
|
|
|
|
'<ANSI color name>' -- color name used by less capable color terminals, can be 'darkred',
|
2020-06-25 20:45:31 +00:00
|
|
|
|
'red', 'darkgreen', 'green', 'darkyellow', 'yellow', 'darkblue',
|
|
|
|
|
'blue', 'darkmagenta', 'magenta', 'black', 'darkgrey', 'grey',
|
|
|
|
|
'white', or 'NONE'
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If your colors are defined correctly, the resulting colorscheme is guaranteed
|
|
|
|
|
to work in GVim (Windows/Linux), MacVim (MacOS), and any properly set up terminal emulator.
|
|
|
|
|
|
|
|
|
|
NOTE: |Replace-mode| will probably be useful here.
|
|
|
|
|
]]
|
|
|
|
|
|
2021-09-06 14:33:01 +00:00
|
|
|
|
local c_bg_darkest = {'#505050', 244, 'gray'}
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_bg = {'#ffffff', 255, 'white'}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_bg_ui = {'#efefef', 0, 'darkgray'}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_bg_error = {'#ffd7d7', 196, 'white'}
|
|
|
|
|
local c_bg_error_weak = {'#ffefef', 196, 'white'}
|
2021-09-07 11:18:46 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_success = {'#89af89', 196, 'white'}
|
|
|
|
|
local c_modified = {'#8989af', 196, 'white'}
|
|
|
|
|
local c_fail = {'#af8989', 196, 'white'}
|
2021-09-07 11:18:46 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_bg_success = {'#e0ece0', 196, 'white'}
|
|
|
|
|
local c_bg_modified = {'#e0e0ec', 196, 'white'}
|
|
|
|
|
local c_bg_fail = {'#ece0e0', 196, 'white'}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_bg_hl_strong = {"#dddddd", 17, "white"}
|
|
|
|
|
local c_bg_hl = {"#eeeeee", 250, "white"}
|
|
|
|
|
local c_bg_hl_weak = {"#f7f2f2", 250, "white"}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
|
|
|
|
local c_bg_hl_special_strong = {"#a3e0ff", 17, "cyan"}
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_bg_hl_special = {"#d4f0ff", 250, "cyan"}
|
|
|
|
|
local c_bg_hl_special_weak = {"#e0eaff", 250, "cyan"}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-01-24 09:42:33 +00:00
|
|
|
|
local c_bg_hl_special_alt_strong = {"#74f283", 17, "cyan"}
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_bg_hl_special_alt = {"#bff2cd", 250, "cyan"}
|
2022-01-24 09:42:33 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_fg_stronger = {'#444444', 236, 'darkgrey'}
|
|
|
|
|
local c_fg_strong = {'#666666', 236, 'darkgrey'}
|
|
|
|
|
local c_fg = {'#8c8c8c', 244, 'gray'}
|
|
|
|
|
local c_fg_weak = {'#9d9d9d', 251, 'gray'}
|
|
|
|
|
local c_fg_weaker = {'#bbbbbb', 251, 'gray'}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_fg_exception = {'#7c4444', 251, 'gray'}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_alert_strong = {'#d70000', 124, 'darkred'}
|
|
|
|
|
local c_alert = {'#d75f00', 196, 'red'}
|
|
|
|
|
local c_alert_weak = {'#000000', 203, 'red'}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_question = {'#000000', 0, 'black'}
|
2021-09-07 11:18:46 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_primary_stronger = {"#7f4b4b", 236, "black"}
|
|
|
|
|
local c_primary_strong = {"#5a4444", 236, "black"}
|
|
|
|
|
local c_primary = {"#6b5555", 244, "gray"}
|
|
|
|
|
local c_primary_weak = {"#7c6666", 248, "darkgray"}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_2_weak = {"#5e955e", 28, "darkgreen"}
|
|
|
|
|
local c_2 = {"#008700", 22, "darkgreen"}
|
|
|
|
|
local c_2_strong = {"#005a00", 22, "darkgreen"}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_3_weak = {"#2d78b7", 20, "blue"}
|
|
|
|
|
local c_3 = {"#005faf", 19, "blue"}
|
|
|
|
|
local c_3_strong = {"#004f92", 17, "darkblue"}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_4_weak = {"#78b7d5", 20, "blue"}
|
|
|
|
|
local c_4 = {"#56acd7", 19, "blue"}
|
|
|
|
|
local c_4_strong = {"#1596d7", 17, "darkblue"}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local c_5_weak = {"#e846ac", 164, "magenta"}
|
|
|
|
|
local c_5 = {"#d70087", 164, "magenta"}
|
|
|
|
|
local c_5_strong = {"#ad006d", 164, "magenta"}
|
2021-09-06 14:33:01 +00:00
|
|
|
|
|
2020-06-25 20:45:31 +00:00
|
|
|
|
--[[ Step 4: highlights
|
|
|
|
|
You can define highlight groups like this:
|
|
|
|
|
|
|
|
|
|
```lua
|
|
|
|
|
<highlight group name> = {
|
2020-11-13 21:36:26 +00:00
|
|
|
|
-- The color for the background, `NONE`, `FG` or `BG`
|
|
|
|
|
bg = <color>,
|
|
|
|
|
|
|
|
|
|
-- The color for the foreground, `NONE`, `FG` or `BG`
|
|
|
|
|
fg = <color>
|
|
|
|
|
|
|
|
|
|
-- The |highlight-blend| value, if one is desired.
|
|
|
|
|
[, blend = <integer>]
|
|
|
|
|
|
2020-09-06 18:30:55 +00:00
|
|
|
|
-- Style can be 'bold', 'italic', and more. See |attr-list| for more information.
|
|
|
|
|
-- It can also have a color, and/or multiple <cterm>s.
|
2020-11-13 21:36:26 +00:00
|
|
|
|
[, style = <cterm>|{<cterm> (, <cterm>) [color=<color>]} ]
|
2020-06-25 20:45:31 +00:00
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
2020-09-05 15:30:54 +00:00
|
|
|
|
You can also link one highlight group to another:
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
|
|
|
|
```lua
|
2020-07-16 01:37:03 +00:00
|
|
|
|
<highlight group name> = '<highlight group name>'
|
2020-06-25 20:45:31 +00:00
|
|
|
|
```
|
2020-09-06 18:30:55 +00:00
|
|
|
|
____________________________________________________________________________
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
2020-09-06 18:30:55 +00:00
|
|
|
|
Here is an example to define `SpellBad` and then link some new group
|
|
|
|
|
`SpellWorse` to it:
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
|
|
|
|
```lua
|
|
|
|
|
SpellBad = { -- ← name of the highlight group
|
2020-09-05 15:30:54 +00:00
|
|
|
|
bg=NONE, -- background color
|
2020-06-25 20:45:31 +00:00
|
|
|
|
fg=red, -- foureground color
|
|
|
|
|
style={ -- the style
|
|
|
|
|
'undercurl', -- undercurl (squiggly line)
|
|
|
|
|
color=red -- the color of the undercurl
|
|
|
|
|
}
|
2020-09-05 15:30:54 +00:00
|
|
|
|
},
|
|
|
|
|
SpellWorse = 'SpellBad'
|
2020-06-25 20:45:31 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If you weren't satisfied with undercurl, and also wanted another effect, you can
|
|
|
|
|
add another one below 'undercurl' and it will be applied as well:
|
|
|
|
|
|
|
|
|
|
```lua
|
|
|
|
|
SpellBad = { -- ← name of the highlight group
|
2020-09-06 18:30:55 +00:00
|
|
|
|
bg=NONE, -- background color
|
2020-06-25 20:45:31 +00:00
|
|
|
|
fg=red, -- foureground color
|
|
|
|
|
style={ -- the style
|
|
|
|
|
'undercurl', -- undercurl (squiggly line)
|
|
|
|
|
'standout'
|
|
|
|
|
color=red -- the color of the undercurl
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
2020-09-06 18:30:55 +00:00
|
|
|
|
____________________________________________________________________________
|
|
|
|
|
|
|
|
|
|
If you want to create a colorscheme that is responsive to the user's
|
|
|
|
|
'background' setting, you can specify special `light` and `dark` keys to
|
|
|
|
|
define how each group should be highlighted in each case.
|
|
|
|
|
|
|
|
|
|
```lua
|
|
|
|
|
SpellBad = {
|
|
|
|
|
bg=NONE,
|
|
|
|
|
dark={fg=white},
|
|
|
|
|
light={fg=black},
|
|
|
|
|
style={'undercurl', color=red}
|
|
|
|
|
}
|
|
|
|
|
```
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
2020-09-06 18:30:55 +00:00
|
|
|
|
Whenever the user changes their 'background' setting, the settings inside of
|
|
|
|
|
whichever key is relevant will be loaded.
|
|
|
|
|
____________________________________________________________________________
|
|
|
|
|
|
|
|
|
|
You can add any custom highlight group to the standard list below but you
|
|
|
|
|
shouldn't remove any if you want a working colorscheme. Most of them are
|
|
|
|
|
described under |highlight-default|, some from |group-name|, and others from
|
|
|
|
|
common syntax groups. Both help sections are good reads.
|
2020-11-19 21:42:47 +00:00
|
|
|
|
____________________________________________________________________________
|
|
|
|
|
|
|
|
|
|
If you want to inherit a specific attribute of another highlight group, you
|
|
|
|
|
can do the following:
|
|
|
|
|
|
|
|
|
|
```lua
|
|
|
|
|
SpellBad = function(self)
|
|
|
|
|
local inherited_style = self.SpellRare.style
|
|
|
|
|
inherited_style.color = red
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
bg=NONE,
|
|
|
|
|
fg=NONE,
|
|
|
|
|
style=inherited_style
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
```
|
|
|
|
|
|
2021-09-06 11:58:30 +00:00
|
|
|
|
The function will be executed by |paper-tonic| and transformed into the
|
2020-11-19 21:42:47 +00:00
|
|
|
|
expected result.
|
|
|
|
|
____________________________________________________________________________
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
|
|
|
|
NOTE: |Replace-mode| will probably be useful here.
|
|
|
|
|
|
2020-09-06 18:30:55 +00:00
|
|
|
|
NOTE: /As long as you do not remove any highlight groups or colors/, you can
|
|
|
|
|
safely ignore any highlight groups that are `link`ed to others.
|
|
|
|
|
|
2020-07-02 17:06:31 +00:00
|
|
|
|
For example, programming languages almost exclusively link to the 1st
|
2020-09-06 18:30:55 +00:00
|
|
|
|
and 2nd sections, so as long as you define everything there you will
|
|
|
|
|
automatically be defining the rest of the highlights, which is one of
|
|
|
|
|
the benefits of using this template.
|
2020-06-25 20:45:31 +00:00
|
|
|
|
]]
|
|
|
|
|
|
2020-11-19 21:42:47 +00:00
|
|
|
|
--[[ DO NOT EDIT `BG` NOR `FG`. ]]
|
|
|
|
|
local BG = 'bg'
|
|
|
|
|
local FG = 'fg'
|
2020-12-17 18:44:25 +00:00
|
|
|
|
local NONE = {}
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
|
|
|
|
--[[ These are the ones you should edit. ]]
|
|
|
|
|
-- This is the only highlight that must be defined separately.
|
2022-03-13 19:41:41 +00:00
|
|
|
|
local highlight_group_normal = {fg = c_fg, bg = c_bg}
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
|
|
|
|
-- This is where the rest of your highlights should go.
|
|
|
|
|
local highlight_groups = {
|
2022-03-13 19:41:41 +00:00
|
|
|
|
--[[ 4.1. Text Analysis ]]
|
|
|
|
|
Comment = {fg = c_fg_weaker, style = 'italic,bold'},
|
|
|
|
|
NonText = {fg = c_fg_weak},
|
|
|
|
|
EndOfBuffer = 'Comment',
|
|
|
|
|
Whitespace = 'NonText',
|
|
|
|
|
|
|
|
|
|
--[[ 4.1.1. Literals]]
|
|
|
|
|
Constant = {fg = c_fg_strong, style = 'italic'},
|
|
|
|
|
String = {fg = fg_strong, style = 'italic'},
|
|
|
|
|
Character = 'String',
|
|
|
|
|
Number = 'String',
|
|
|
|
|
Boolean = 'String',
|
|
|
|
|
Float = 'Number',
|
|
|
|
|
|
|
|
|
|
--[[ 4.1.2. Identifiers]]
|
|
|
|
|
Identifier = {fg = c_primary_weak, style = 'bold'},
|
|
|
|
|
Function = {fg = c_primary_strong, style = 'bold'},
|
|
|
|
|
|
|
|
|
|
--[[ 4.1.3. Syntax]]
|
|
|
|
|
Statement = {fg = c_fg_weak},
|
|
|
|
|
Conditional = {fg = c_fg_strong, style = 'bold'},
|
|
|
|
|
Repeat = 'Conditional',
|
|
|
|
|
Label = {fg = c_fg_stronger, style = 'bold'},
|
|
|
|
|
Operator = {fg = c_fg, style = 'bold'},
|
|
|
|
|
Keyword = {fg = c_fg_weaker, style = 'bold'},
|
|
|
|
|
Exception = {fg = c_fg_exception, style = 'bold'},
|
|
|
|
|
Noise = {fg = c_fg_weaker},
|
|
|
|
|
|
|
|
|
|
--[[ 4.1.4. Metatextual Information]]
|
|
|
|
|
PreProc = {fg = c_fg_weak},
|
|
|
|
|
Include = {fg = c_fg_weak, style = 'bold'},
|
|
|
|
|
Define = 'Include',
|
|
|
|
|
Macro = {fg = c_fg, style = 'bold'},
|
|
|
|
|
PreCondit = 'Macro',
|
|
|
|
|
|
|
|
|
|
--[[ 4.1.5. Semantics]]
|
|
|
|
|
Type = {fg = c_primary, style = 'bold'},
|
|
|
|
|
StorageClass = {fg = c_primary},
|
|
|
|
|
Structure = 'StorageClass',
|
|
|
|
|
Typedef = 'StorageClass',
|
|
|
|
|
|
|
|
|
|
--[[ 4.1.6. Edge Cases]]
|
|
|
|
|
Special = {fg = c_primary_stronger},
|
|
|
|
|
SpecialChar = {fg = c_primary_stronger, style = 'bold'},
|
|
|
|
|
SpecialKey = 'SpecialCharacter',
|
|
|
|
|
Tag = {fg = c_primary_strong, style = 'bold'},
|
|
|
|
|
Delimiter = 'Noise',
|
|
|
|
|
SpecialComment = {fg = c_fg_exception, style = 'bold'},
|
|
|
|
|
Debug = 'WarningMsg',
|
|
|
|
|
|
|
|
|
|
--[[ 4.1.7. Help Syntax]]
|
|
|
|
|
Underlined = {style = 'underline'},
|
|
|
|
|
Ignore = {fg = c_fg_weak},
|
|
|
|
|
Error = {fg = c_alert_strong, style = 'bold'},
|
|
|
|
|
Todo = {fg = c_alert_strong},
|
|
|
|
|
Hint = {fg = c_alert_weak, style = 'italic'},
|
|
|
|
|
Info = {fg = c_alert_weak, style = 'italic'},
|
|
|
|
|
Warning = {fg = c_alert},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2... Editor UI ]]
|
|
|
|
|
--[[ 4.2.1. Status Line]]
|
|
|
|
|
StatusLine = {fg = c_fg, bg = c_bg_ui, style = 'italic'},
|
|
|
|
|
StatusLineNC = {fg = c_fg_weaker, bg = c_bg_ui, style = 'italic'},
|
|
|
|
|
StatusLineTerm = 'StatusLine',
|
|
|
|
|
StatusLineTermNC = 'StatusLineNC',
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.2. Separators]]
|
|
|
|
|
VertSplit = {fg = c_bg_hl_strong},
|
|
|
|
|
TabLine = 'StatusLineNC',
|
|
|
|
|
TabLineFill = {fg = c_bg_ui, bg = c_bg_ui},
|
|
|
|
|
TabLineSel = 'StatusLine',
|
|
|
|
|
Title = {style = 'bold'},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.3. Conditional Line Highlighting]]
|
|
|
|
|
Conceal = 'Noise',
|
|
|
|
|
CursorLine = {bg = c_bg_hl},
|
|
|
|
|
CursorLineNr = {fg = c_fg_weak, style = 'bold'},
|
|
|
|
|
debugBreakpoint = 'ErrorMsg',
|
|
|
|
|
debugPC = 'ColorColumn',
|
|
|
|
|
LineNr = {fg = c_fg_weak},
|
|
|
|
|
QuickFixLine = {bg = c_bg_hl_special_weak, style = 'bold'},
|
|
|
|
|
Visual = {bg = c_bg_hl_special},
|
|
|
|
|
VisualNOS = {bg = c_bg_hl_special, fg = c_fg_strong, style = 'bold'},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.4.1. Popup Menu]]
|
|
|
|
|
Pmenu = {fg = c_fg, bg = c_bg_ui},
|
|
|
|
|
PmenuSbar = 'Pmenu',
|
|
|
|
|
PmenuSel = {fg = c_fg_strong, bg = c_bg_ui, style = 'bold'},
|
|
|
|
|
PmenuThumb = 'Pmenu',
|
|
|
|
|
WildMenu = {fg = c_fg_strong, bg = c_bg_ui, style = 'bold'},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.4.2. Floats]]
|
|
|
|
|
NormalFloat = {bg = "NONE", fg = c_fg},
|
|
|
|
|
FloatBorder = {bg = "NONE", fg = c_fg_stronger},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.5. Folds]]
|
|
|
|
|
FoldColumn = {fg = c_fg_weak},
|
|
|
|
|
Folded = {fg = c_fg_strong, style = 'bold'},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.6. Diffs]]
|
|
|
|
|
DiffAdd = {bg = c_bg_success},
|
|
|
|
|
DiffChange = {bg = c_bg_modified},
|
|
|
|
|
DiffDelete = {bg = c_bg_fail},
|
|
|
|
|
DiffText = {fg = c_fg_stronger, bg = c_bg_success},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.7. Searching]]
|
|
|
|
|
IncSearch = {style = 'inverse'},
|
|
|
|
|
MatchParen = {
|
|
|
|
|
bg = c_bg_hl_special_alt_strong,
|
|
|
|
|
style = {'bold', 'underline', color = c_fg_stronger}
|
|
|
|
|
},
|
|
|
|
|
Search = {bg = c_bg_hl_special},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.8. Spelling]]
|
|
|
|
|
SpellBad = {bg = c_bg_error_weak, fg = c_alert_strong},
|
|
|
|
|
SpellCap = {bg = c_bg_error_weak, fg = c_alert},
|
|
|
|
|
SpellLocal = {bg = c_bg_error_weak, fg = c_alert_weak},
|
|
|
|
|
SpellRare = {bg = c_bg_error_weak, fg = c_alert_weak},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.9. Conditional Column Highlighting]]
|
|
|
|
|
ColorColumn = {bg = c_bg_hl_weak},
|
|
|
|
|
SignColumn = NONE,
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.10. Messages]]
|
|
|
|
|
ErrorMsg = {fg = c_alert, style = 'bold'},
|
|
|
|
|
HintMsg = {fg = c_alert_weak, style = 'italic'},
|
|
|
|
|
InfoMsg = {fg = c_alert_weak, style = 'italic'},
|
|
|
|
|
ModeMsg = {fg = c_question},
|
|
|
|
|
WarningMsg = {fg = c_alert, style = 'bold'},
|
|
|
|
|
Question = {fg = c_question, style = 'bold'},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.11. Diagnostic ]]
|
|
|
|
|
DiagnosticHint = 'Hint',
|
|
|
|
|
DiagnosticWarn = 'Warning',
|
|
|
|
|
DiagnosticWarning = 'Warning',
|
|
|
|
|
DiagnosticError = 'Error',
|
|
|
|
|
DiagnosticInfo = 'Info',
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.12. LSP ]]
|
|
|
|
|
LspReferenceRead = {bg = c_bg_hl_special_weak, style = 'NONE'},
|
|
|
|
|
LspReferenceText = {bg = c_bg_hl_special_weak, style = 'NONE'},
|
|
|
|
|
LspReferenceWrite = {bg = c_bg_hl_special_weak, style = 'NONE'},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.13. Cursor ]]
|
|
|
|
|
Cursor = {style = 'inverse'},
|
|
|
|
|
CursorIM = 'Cursor',
|
|
|
|
|
CursorColumn = {bg = c_bg_hl},
|
|
|
|
|
|
|
|
|
|
--[[ 4.2.14. Misc ]]
|
|
|
|
|
Directory = {fg = c_primary_weak, style = 'bold'},
|
|
|
|
|
|
|
|
|
|
--[[ 4.3. Programming Languages
|
2020-06-25 20:45:31 +00:00
|
|
|
|
Everything in this section is OPTIONAL. Feel free to remove everything
|
|
|
|
|
here if you don't want to define it, or add more if there's something
|
|
|
|
|
missing.
|
|
|
|
|
]]
|
2022-03-13 19:41:41 +00:00
|
|
|
|
--[[ 4.3.1. C ]]
|
|
|
|
|
cConstant = 'Constant',
|
|
|
|
|
cCustomClass = 'Type',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.2. C++ ]]
|
|
|
|
|
cppSTLexception = 'Exception',
|
|
|
|
|
cppSTLnamespace = 'String',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.3 C# ]]
|
|
|
|
|
csBraces = 'Delimiter',
|
|
|
|
|
csClass = 'Structure',
|
|
|
|
|
csClassType = 'Type',
|
|
|
|
|
csContextualStatement = 'Conditional',
|
|
|
|
|
csEndColon = 'Delimiter',
|
|
|
|
|
csGeneric = 'Typedef',
|
|
|
|
|
csInterpolation = 'Include',
|
|
|
|
|
csInterpolationDelimiter = 'SpecialChar',
|
|
|
|
|
csLogicSymbols = 'Operator',
|
|
|
|
|
csModifier = 'Keyword',
|
|
|
|
|
csNew = 'Operator',
|
|
|
|
|
csNewType = 'Type',
|
|
|
|
|
csParens = 'Delimiter',
|
|
|
|
|
csPreCondit = 'PreProc',
|
|
|
|
|
csQuote = 'Delimiter',
|
|
|
|
|
csRepeat = 'Repeat',
|
|
|
|
|
csStorage = 'StorageClass',
|
|
|
|
|
csUnspecifiedStatement = 'Statement',
|
|
|
|
|
csXmlTag = 'Define',
|
|
|
|
|
csXmlTagName = 'Define',
|
|
|
|
|
razorCode = 'PreProc',
|
|
|
|
|
razorcsLHSMemberAccessOperator = 'Noise',
|
|
|
|
|
razorcsRHSMemberAccessOperator = 'razorcsLHSMemberAccessOperator',
|
|
|
|
|
razorcsStringDelimiter = 'razorhtmlValueDelimiter',
|
|
|
|
|
razorcsTypeNullable = 'Special',
|
|
|
|
|
razorcsUnaryOperatorKeyword = 'Operator',
|
|
|
|
|
razorDelimiter = 'Delimiter',
|
|
|
|
|
razorEventAttribute = 'PreCondit',
|
|
|
|
|
razorFor = 'razorIf',
|
|
|
|
|
razorhtmlAttribute = 'htmlArg',
|
|
|
|
|
razorhtmlAttributeOperator = 'Operator',
|
|
|
|
|
razorhtmlTag = 'htmlTag',
|
|
|
|
|
razorhtmlValueDelimiter = 'Delimiter',
|
|
|
|
|
razorIf = 'PreCondit',
|
|
|
|
|
razorImplicitExpression = 'PreProc',
|
|
|
|
|
razorLine = 'Constant',
|
|
|
|
|
razorUsing = 'Include',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.4. CSS ]]
|
|
|
|
|
cssAtRule = 'Label',
|
|
|
|
|
cssAttr = 'Keyword',
|
|
|
|
|
cssAttrComma = 'Noise',
|
|
|
|
|
cssAttrRegion = 'Keyword',
|
|
|
|
|
cssBraces = 'Delimiter',
|
|
|
|
|
cssClassName = {fg = c_2},
|
|
|
|
|
cssClassNameDot = 'Noise',
|
|
|
|
|
cssFlexibleBoxAttr = 'cssAttr',
|
|
|
|
|
cssFunctionComma = 'Noise',
|
|
|
|
|
cssImportant = 'Exception',
|
|
|
|
|
cssNoise = 'Noise',
|
|
|
|
|
cssProp = {fg = c_primary_weak},
|
|
|
|
|
cssPseudoClass = {fg = c_2_weak},
|
|
|
|
|
cssPseudoClassId = 'cssSelectorOp',
|
|
|
|
|
cssSelectorOp = 'Operator',
|
|
|
|
|
cssTagName = 'htmlTagName',
|
|
|
|
|
cssUnitDecorators = 'Type',
|
|
|
|
|
scssAmpersand = 'cssNestingSelector',
|
|
|
|
|
scssAttribute = 'Noise',
|
|
|
|
|
scssBoolean = 'Boolean',
|
|
|
|
|
scssDefault = 'Keyword',
|
|
|
|
|
scssElse = 'scssIf',
|
|
|
|
|
scssMixinName = 'Function',
|
|
|
|
|
scssIf = 'PreCondit',
|
|
|
|
|
scssInclude = 'Include',
|
|
|
|
|
scssSelectorChar = 'Delimiter',
|
|
|
|
|
scssDefinition = 'PreProc',
|
|
|
|
|
scssSelectorName = 'cssClassName',
|
|
|
|
|
scssVariable = 'Define',
|
|
|
|
|
scssVariableAssignment = 'Operator',
|
|
|
|
|
|
|
|
|
|
-- added via custom scm highlights
|
|
|
|
|
cssTSProperty = 'cssProp',
|
|
|
|
|
cssIdentifier = {fg = c_2_strong, style = 'bold'},
|
|
|
|
|
cssTSType = 'htmlTagName',
|
|
|
|
|
cssIdSelector = 'SpecialChar',
|
|
|
|
|
cssNestingSelector = {fg = c_2_strong},
|
|
|
|
|
cssUniversalSelector = 'SpecialChar',
|
|
|
|
|
cssPropertyValue = {fg = c_fg, style = 'bold'},
|
|
|
|
|
cssMediaQuery = 'Function',
|
|
|
|
|
cssMediaQueryValue = 'cssAtRule',
|
|
|
|
|
cssMediaQueryValueUnit = 'cssMediaQueryValue',
|
|
|
|
|
cssMediaFeatureName = 'cssMediaQuery',
|
|
|
|
|
cssTSNumber = 'cssPropertyValue',
|
|
|
|
|
cssTSString = 'cssPropertyValue',
|
|
|
|
|
cssTSType = 'Noise',
|
|
|
|
|
cssTSOperator = 'Noise',
|
|
|
|
|
cssUnit = 'Noise',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.5. Dart ]]
|
|
|
|
|
dartLibrary = 'Statement',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.6. dot ]]
|
|
|
|
|
dotKeyChar = 'Character',
|
|
|
|
|
dotType = 'Type',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.7. Go ]]
|
|
|
|
|
goBlock = 'Delimiter',
|
|
|
|
|
goBoolean = 'Boolean',
|
|
|
|
|
goBuiltins = 'Operator',
|
|
|
|
|
goField = 'Identifier',
|
|
|
|
|
goFloat = 'Float',
|
|
|
|
|
goFormatSpecifier = 'Character',
|
|
|
|
|
goFunction = 'Function',
|
|
|
|
|
goFunctionCall = 'goFunction',
|
|
|
|
|
goFunctionReturn = NONE,
|
|
|
|
|
goMethodCall = 'goFunctionCall',
|
|
|
|
|
goParamType = 'goReceiverType',
|
|
|
|
|
goPointerOperator = 'SpecialChar',
|
|
|
|
|
goPredefinedIdentifiers = 'Constant',
|
|
|
|
|
goReceiver = 'goBlock',
|
|
|
|
|
goReceiverType = 'goTypeName',
|
|
|
|
|
goSimpleParams = 'goBlock',
|
|
|
|
|
goType = 'Type',
|
|
|
|
|
goTypeConstructor = 'goFunction',
|
|
|
|
|
goTypeName = 'Type',
|
|
|
|
|
goVarAssign = 'Identifier',
|
|
|
|
|
goVarDefs = 'goVarAssign',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.8. HTML ]]
|
|
|
|
|
htmlArg = 'Label',
|
|
|
|
|
htmlBold = {style = 'bold'},
|
|
|
|
|
htmlTitle = {fg = c_fg_stronger, style = 'bold'},
|
|
|
|
|
htmlEndTag = 'htmlTag',
|
|
|
|
|
htmlH1 = 'markdownH1',
|
|
|
|
|
htmlH2 = 'markdownH2',
|
|
|
|
|
htmlH3 = 'markdownH3',
|
|
|
|
|
htmlH4 = 'markdownH4',
|
|
|
|
|
htmlH5 = 'markdownH5',
|
|
|
|
|
htmlH6 = 'markdownH6',
|
|
|
|
|
htmlItalic = {style = 'italic'},
|
|
|
|
|
htmlSpecialTagName = 'Keyword',
|
|
|
|
|
htmlTag = {fg = c_3},
|
|
|
|
|
htmlTagN = htmlTagName,
|
|
|
|
|
htmlTagName = {fg = c_3},
|
|
|
|
|
|
|
|
|
|
htmlTSString = {fg = c_fg_strong},
|
|
|
|
|
htmlTSTag = 'htmlTag',
|
|
|
|
|
htmlTSTagAttribute = 'Statement',
|
|
|
|
|
htmlTSTitle = 'htmlTitle',
|
|
|
|
|
|
|
|
|
|
-- defined in custom html scm files
|
|
|
|
|
DataAttributeValue = 'Function',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.9. Java ]]
|
|
|
|
|
javaClassDecl = 'Structure',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.10. JavaScript ]]
|
|
|
|
|
jsFuncBlock = 'Function',
|
|
|
|
|
jsObjectKey = 'Type',
|
|
|
|
|
jsReturn = 'Keyword',
|
|
|
|
|
jsVariableDef = 'Identifier',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.11. JSON ]]
|
|
|
|
|
jsonBraces = 'luaBraces',
|
|
|
|
|
jsonEscape = 'SpecialChar',
|
|
|
|
|
jsonKeywordMatch = 'Operator',
|
|
|
|
|
jsonNull = 'Constant',
|
|
|
|
|
jsonQuote = 'Delimiter',
|
|
|
|
|
jsonString = 'String',
|
|
|
|
|
jsonStringSQError = 'Exception',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.12. Lua ]]
|
|
|
|
|
luaBraces = 'Structure',
|
|
|
|
|
luaBrackets = 'Delimiter',
|
|
|
|
|
luaBuiltin = 'Keyword',
|
|
|
|
|
luaComma = 'Delimiter',
|
|
|
|
|
luaFuncArgName = 'Identifier',
|
|
|
|
|
luaFuncCall = 'Function',
|
|
|
|
|
luaFuncId = 'luaNoise',
|
|
|
|
|
luaFuncKeyword = 'Type',
|
|
|
|
|
luaFuncName = 'Function',
|
|
|
|
|
luaFuncParens = 'Delimiter',
|
|
|
|
|
luaFuncTable = 'Structure',
|
|
|
|
|
luaIn = 'luaRepeat',
|
|
|
|
|
luaLocal = 'Type',
|
|
|
|
|
luaNoise = 'Delimiter',
|
|
|
|
|
luaParens = 'Delimiter',
|
|
|
|
|
luaSpecialTable = 'Structure',
|
|
|
|
|
luaSpecialValue = 'Function',
|
|
|
|
|
luaStringLongTag = function(self)
|
|
|
|
|
local delimiter = self.Delimiter
|
|
|
|
|
return {bg = delimiter.bg, fg = delimiter.fg, style = 'italic'}
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.12. Make ]]
|
|
|
|
|
makeCommands = 'Statment',
|
|
|
|
|
makeSpecTarget = 'Type',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.13. Markdown ]]
|
|
|
|
|
markdownCode = 'mkdCode',
|
|
|
|
|
markdownCodeDelimiter = 'mkdCodeDelimiter',
|
|
|
|
|
markdownH1 = {fg = c_fg_stronger, style = 'bold'},
|
|
|
|
|
markdownH2 = {fg = c_fg_stronger, style = 'bold'},
|
|
|
|
|
markdownH3 = {fg = c_fg_strong, style = 'bold'},
|
|
|
|
|
markdownH4 = {fg = c_fg_strong, style = 'bold'},
|
|
|
|
|
markdownH5 = {fg = c_fg_strong, style = 'bold'},
|
|
|
|
|
markdownH6 = {fg = c_fg_strong, style = 'bold'},
|
|
|
|
|
markdownLinkDelimiter = 'Delimiter',
|
|
|
|
|
markdownLinkTextDelimiter = 'markdownLinkDelimiter',
|
|
|
|
|
markdownUrl = {fg = c_primary},
|
|
|
|
|
mkdBold = {style = 'bold'},
|
|
|
|
|
mkdBoldItalic = 'mkdBold',
|
|
|
|
|
mkdCode = {fg = c_primary_weak},
|
|
|
|
|
mkdCodeDelimiter = 'Noise',
|
|
|
|
|
mkdCodeEnd = 'mkdCodeStart',
|
|
|
|
|
mkdCodeStart = 'mkdCodeDelimiter',
|
|
|
|
|
mkdHeading = 'Delimiter',
|
|
|
|
|
mkdItalic = 'mkdBold',
|
|
|
|
|
mkdLineBreak = 'NonText',
|
|
|
|
|
mkdListItem = 'Special',
|
|
|
|
|
mkdRule = function(self)
|
|
|
|
|
return {
|
|
|
|
|
fg = self.Ignore.fg,
|
|
|
|
|
style = {'underline', color = self.Delimiter.fg}
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
mkdSnippetPHP = 'mkdCode',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.20. Python ]]
|
|
|
|
|
pythonBrackets = 'Delimiter',
|
|
|
|
|
pythonBuiltinFunc = 'Operator',
|
|
|
|
|
pythonBuiltinObj = 'Type',
|
|
|
|
|
pythonBuiltinType = 'Type',
|
|
|
|
|
pythonClass = 'Structure',
|
|
|
|
|
pythonClassParameters = 'pythonParameters',
|
|
|
|
|
pythonDecorator = 'PreProc',
|
|
|
|
|
pythonDottedName = 'Identifier',
|
|
|
|
|
pythonError = 'Error',
|
|
|
|
|
pythonException = 'Exception',
|
|
|
|
|
pythonInclude = 'Include',
|
|
|
|
|
pythonIndentError = 'pythonError',
|
|
|
|
|
pythonLambdaExpr = 'pythonOperator',
|
|
|
|
|
pythonOperator = 'Operator',
|
|
|
|
|
pythonParam = 'Identifier',
|
|
|
|
|
pythonParameters = 'Delimiter',
|
|
|
|
|
pythonSelf = 'Statement',
|
|
|
|
|
pythonSpaceError = 'pythonError',
|
|
|
|
|
pythonStatement = 'Statement',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.21. Ruby ]]
|
|
|
|
|
rubyClass = 'Structure',
|
|
|
|
|
rubyDefine = 'Define',
|
|
|
|
|
rubyInterpolationDelimiter = 'Delimiter',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.23. Scala ]]
|
|
|
|
|
scalaKeyword = 'Keyword',
|
|
|
|
|
scalaNameDefinition = 'Identifier',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.24. shell ]]
|
|
|
|
|
shDerefSimple = 'SpecialChar',
|
|
|
|
|
shFunctionKey = 'Function',
|
|
|
|
|
shLoop = 'Repeat',
|
|
|
|
|
shParen = 'Delimiter',
|
|
|
|
|
shQuote = 'Delimiter',
|
|
|
|
|
shSet = 'Statement',
|
|
|
|
|
shTestOpr = 'Debug',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.25. Solidity ]]
|
|
|
|
|
solBuiltinType = 'Type',
|
|
|
|
|
solContract = 'Typedef',
|
|
|
|
|
solContractName = 'Function',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.26. TOML ]]
|
|
|
|
|
tomlComment = 'Comment',
|
|
|
|
|
tomlDate = 'Special',
|
|
|
|
|
tomlFloat = 'Float',
|
|
|
|
|
tomlKey = 'Label',
|
|
|
|
|
tomlTable = 'Structure',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.27. VimScript ]]
|
|
|
|
|
vimCmdSep = 'Delimiter',
|
|
|
|
|
vimFunction = 'Function',
|
|
|
|
|
vimFgBgAttrib = 'Constant',
|
|
|
|
|
vimHiCterm = 'Label',
|
|
|
|
|
vimHiCtermFgBg = 'vimHiCterm',
|
|
|
|
|
vimHiGroup = 'Typedef',
|
|
|
|
|
vimHiGui = 'vimHiCterm',
|
|
|
|
|
vimHiGuiFgBg = 'vimHiGui',
|
|
|
|
|
vimHiKeyList = 'Operator',
|
|
|
|
|
vimIsCommand = 'Identifier',
|
|
|
|
|
vimOption = 'Keyword',
|
|
|
|
|
vimScriptDelim = 'Ignore',
|
|
|
|
|
vimSet = 'String',
|
|
|
|
|
vimSetEqual = 'Operator',
|
|
|
|
|
vimSetSep = 'Delimiter',
|
|
|
|
|
vimUserFunc = 'vimFunction',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.28. XML ]]
|
|
|
|
|
xmlAttrib = 'htmlArg',
|
|
|
|
|
xmlEndTag = 'xmlTag',
|
|
|
|
|
xmlEqual = 'Operator',
|
|
|
|
|
xmlTag = 'htmlTag',
|
|
|
|
|
xmlTagName = 'htmlTagName',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.29. SQL ]]
|
|
|
|
|
sqlKeyword = 'Keyword',
|
|
|
|
|
sqlParen = 'Delimiter',
|
|
|
|
|
sqlSpecial = 'Constant',
|
|
|
|
|
sqlStatement = 'Statement',
|
|
|
|
|
sqlParenFunc = 'Function',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.30. dos INI ]]
|
|
|
|
|
dosiniHeader = 'Title',
|
|
|
|
|
dosiniLabel = 'Label',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.31. Crontab ]]
|
|
|
|
|
crontabDay = 'StorageClass',
|
|
|
|
|
crontabDow = 'String',
|
|
|
|
|
crontabHr = 'Number',
|
|
|
|
|
crontabMin = 'Float',
|
|
|
|
|
crontabMnth = 'Structure',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.32. PlantUML ]]
|
|
|
|
|
plantumlArrowLR = 'Statement',
|
|
|
|
|
plantumlColonLine = NONE,
|
|
|
|
|
plantumlMindmap = 'Label',
|
|
|
|
|
plantumlMindmap2 = 'Label',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.33. YAML ]]
|
|
|
|
|
yamlKey = 'Label',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.34. Git ]]
|
|
|
|
|
diffAdded = 'DiffAdd',
|
|
|
|
|
diffRemoved = 'DiffDelete',
|
|
|
|
|
gitcommitHeader = 'SpecialComment',
|
|
|
|
|
gitcommitDiscardedFile = 'gitcommitSelectedFile',
|
|
|
|
|
gitcommitOverFlow = 'Error',
|
|
|
|
|
gitcommitSelectedFile = 'Directory',
|
|
|
|
|
gitcommitSummary = 'Title',
|
|
|
|
|
gitcommitUntrackedFile = 'gitcommitSelectedFile',
|
|
|
|
|
gitconfigAssignment = 'String',
|
|
|
|
|
gitconfigEscape = 'SpecialChar',
|
|
|
|
|
gitconfigNone = 'Operator',
|
|
|
|
|
gitconfigSection = 'Structure',
|
|
|
|
|
gitconfigVariable = 'Label',
|
|
|
|
|
gitrebaseBreak = 'Keyword',
|
|
|
|
|
gitrebaseCommit = 'Tag',
|
|
|
|
|
gitrebaseDrop = 'Exception',
|
|
|
|
|
gitrebaseEdit = 'Define',
|
|
|
|
|
gitrebaseExec = 'PreProc',
|
|
|
|
|
gitrebaseFixup = 'gitrebaseSquash',
|
|
|
|
|
gitrebaseMerge = 'PreProc',
|
|
|
|
|
gitrebasePick = 'Include',
|
|
|
|
|
gitrebaseReset = 'gitrebaseLabel',
|
|
|
|
|
gitrebaseReword = 'gitrebasePick',
|
|
|
|
|
gitrebaseSquash = 'Macro',
|
|
|
|
|
gitrebaseSummary = 'Title',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.35. Vimtex ]]
|
|
|
|
|
texMathRegion = 'Number',
|
|
|
|
|
texMathSub = 'Number',
|
|
|
|
|
texMathSuper = 'Number',
|
|
|
|
|
texMathRegionX = 'Number',
|
|
|
|
|
texMathRegionXX = 'Number',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.36. Coq ]]
|
|
|
|
|
coqConstructor = 'Constant',
|
|
|
|
|
coqDefBinderType = 'coqDefType',
|
|
|
|
|
coqDefContents1 = 'coqConstructor',
|
|
|
|
|
coqDefType = 'Typedef',
|
|
|
|
|
coqIndBinderTerm = 'coqDefBinderType',
|
|
|
|
|
coqIndConstructor = 'Delimiter',
|
|
|
|
|
coqIndTerm = 'Type',
|
|
|
|
|
coqKwd = 'Keyword',
|
|
|
|
|
coqKwdParen = 'Function',
|
|
|
|
|
coqProofDelim = 'coqVernacCmd',
|
|
|
|
|
coqProofDot = 'coqTermPunctuation',
|
|
|
|
|
coqProofPunctuation = 'coqTermPunctuation',
|
|
|
|
|
coqRequire = 'Include',
|
|
|
|
|
coqTactic = 'Operator',
|
|
|
|
|
coqTermPunctuation = 'Delimiter',
|
|
|
|
|
coqVernacCmd = 'Statement',
|
|
|
|
|
coqVernacPunctuation = 'coqTermPunctuation',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.37 Help ]]
|
|
|
|
|
helpHeader = 'Label',
|
|
|
|
|
helpOption = 'Keyword',
|
|
|
|
|
helpHeadline = 'Title',
|
|
|
|
|
helpSectionDelim = 'Delimiter',
|
|
|
|
|
helpHyperTextJump = 'Special',
|
|
|
|
|
helpExample = 'Info',
|
|
|
|
|
|
|
|
|
|
--[[ 4.3.38 Man ]]
|
|
|
|
|
-- manBold = function(self) return vim.tbl_extend('force', self.mkdCode, {style='nocombine'}) end,
|
|
|
|
|
manOptionDesc = 'Special',
|
|
|
|
|
manReference = 'Tag',
|
|
|
|
|
manUnderline = 'Label',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4. Plugins
|
2020-06-25 20:45:31 +00:00
|
|
|
|
Everything in this section is OPTIONAL. Feel free to remove everything
|
|
|
|
|
here if you don't want to define it, or add more if there's something
|
|
|
|
|
missing.
|
|
|
|
|
]]
|
2022-03-13 19:41:41 +00:00
|
|
|
|
--[[ 4.4.1. ALE ]]
|
|
|
|
|
ALEErrorSign = 'ErrorMsg',
|
|
|
|
|
ALEWarningSign = 'WarningMsg',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.2. coc.nvim ]]
|
|
|
|
|
CocErrorHighlight = {style = {'undercurl', color = c_alert}},
|
|
|
|
|
CocHintHighlight = {style = {'undercurl', color = c_primary_strong}},
|
|
|
|
|
CocInfoHighlight = {style = {'undercurl', color = pink_light}},
|
|
|
|
|
CocWarningHighlight = {style = {'undercurl', color = c_primary_strong}},
|
|
|
|
|
CocErrorSign = 'ALEErrorSign',
|
|
|
|
|
CocHintSign = 'HintMsg',
|
|
|
|
|
CocInfoSign = 'InfoMsg',
|
|
|
|
|
CocWarningSign = 'ALEWarningSign',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.2. vim-jumpmotion / vim-easymotion ]]
|
|
|
|
|
EasyMotion = 'IncSearch',
|
|
|
|
|
JumpMotion = 'EasyMotion',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.4. vim-gitgutter / vim-signify ]]
|
|
|
|
|
GitGutterAdd = {fg = c_success},
|
|
|
|
|
GitGutterChange = {fg = c_modified},
|
|
|
|
|
GitGutterDelete = {fg = c_fail},
|
|
|
|
|
GitGutterChangeDelete = {fg = c_modified},
|
|
|
|
|
|
|
|
|
|
SignifySignAdd = 'GitGutterAdd',
|
|
|
|
|
SignifySignChange = 'GitGutterChange',
|
|
|
|
|
SignifySignDelete = 'GitGutterDelete',
|
|
|
|
|
SignifySignChangeDelete = 'GitGutterChangeDelete',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.5. vim-indent-guides ]]
|
|
|
|
|
IndentGuidesOdd = {bg = c_bg_hl},
|
|
|
|
|
IndentGuidesEven = {bg = c_bg_hl_strong},
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.7. NERDTree ]]
|
|
|
|
|
NERDTreeCWD = 'Label',
|
|
|
|
|
NERDTreeUp = 'Operator',
|
|
|
|
|
NERDTreeDir = 'Directory',
|
|
|
|
|
NERDTreeDirSlash = 'Delimiter',
|
|
|
|
|
NERDTreeOpenable = 'NERDTreeDir',
|
|
|
|
|
NERDTreeClosable = 'NERDTreeOpenable',
|
|
|
|
|
NERDTreeExecFile = 'Function',
|
|
|
|
|
NERDTreeLinkTarget = 'Tag',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.8. nvim-treesitter ]]
|
|
|
|
|
TSConstBuiltin = 'Constant',
|
|
|
|
|
TSConstructor = 'Typedef',
|
|
|
|
|
TSKeywordFunction = {fg = c_fg_weak, style = 'bold'},
|
|
|
|
|
TSFuncBuiltin = 'Function',
|
|
|
|
|
TSStringEscape = 'Character',
|
|
|
|
|
TSStringRegex = 'SpecialChar',
|
|
|
|
|
TSURI = 'Tag',
|
|
|
|
|
TSVariable = 'Identifier',
|
|
|
|
|
TSVariableBuiltin = 'Identifier',
|
|
|
|
|
TSTitle = 'Title',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.9. barbar.nvim ]]
|
|
|
|
|
BufferCurrent = 'TabLineSel',
|
|
|
|
|
BufferCurrentIndex = function(self)
|
|
|
|
|
return {fg = self.InfoMsg.fg, bg = self.BufferCurrent.bg}
|
|
|
|
|
end,
|
|
|
|
|
BufferCurrentMod = {fg = c_modified, bg = c_bg, style = 'bold'},
|
|
|
|
|
BufferCurrentSign = 'HintMsg',
|
|
|
|
|
BufferCurrentTarget = 'BufferCurrentSign',
|
|
|
|
|
|
|
|
|
|
BufferInactive = 'BufferVisible',
|
|
|
|
|
BufferInactiveIndex = function(self)
|
|
|
|
|
return {fg = self.InfoMsg.fg, bg = self.BufferInactive.bg}
|
|
|
|
|
end,
|
|
|
|
|
BufferInactiveMod = 'BufferVisibleMod',
|
|
|
|
|
BufferInactiveSign = 'BufferVisibleSign',
|
|
|
|
|
BufferInactiveTarget = 'BufferVisibleTarget',
|
|
|
|
|
|
|
|
|
|
BufferTabpages = {fg = BG, bg = FG, style = 'bold'},
|
|
|
|
|
-- BufferTabpageFill = 'TabLineFill',
|
|
|
|
|
|
|
|
|
|
BufferVisible = 'TabLine',
|
|
|
|
|
BufferVisibleIndex = function(self)
|
|
|
|
|
return {fg = self.InfoMsg.fg, bg = self.BufferVisible.bg}
|
|
|
|
|
end,
|
|
|
|
|
BufferVisibleMod = {fg = white, bg = c_bg_darkest, style = 'italic'},
|
|
|
|
|
BufferVisibleSign = 'BufferVisible',
|
|
|
|
|
BufferVisibleTarget = function(self)
|
|
|
|
|
local super = self.BufferVisibleMod
|
|
|
|
|
return {fg = super.fg, bg = super.bg, style = 'bold'}
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.10. vim-sandwhich ]]
|
|
|
|
|
OperatorSandwichChange = 'DiffText',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.11. Fern ]]
|
|
|
|
|
FernBranchText = 'Directory',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.12. LSPSaga ]]
|
|
|
|
|
DefinitionCount = 'Number',
|
|
|
|
|
DefinitionIcon = 'Special',
|
|
|
|
|
ReferencesCount = 'Number',
|
|
|
|
|
ReferencesIcon = 'DefinitionIcon',
|
|
|
|
|
TargetFileName = 'Directory',
|
|
|
|
|
TargetWord = 'Title',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.13. indent-blankline.nvim ]]
|
|
|
|
|
-- IndentBlanklineChar = function(self) return vim.tbl_extend('force', (fg=c_bg_ui) {style='nocombine'}) end,
|
|
|
|
|
IndentBlanklineChar = {fg = c_bg_hl_weak, style = 'nocombine'},
|
|
|
|
|
IndentBlanklineContextChar = {fg = c_fg, style = 'nocombine'},
|
|
|
|
|
IndentBlanklineSpaceChar = 'IndentBlanklineChar',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.14. trouble.nvim ]]
|
|
|
|
|
TroubleCount = function(self)
|
|
|
|
|
return vim.tbl_extend('force', self.Number, {style = 'underline'})
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.14. todo-comments.nvim ]]
|
|
|
|
|
TodoFgFIX = function(self) return {fg = self.ErrorMsg.fg} end,
|
|
|
|
|
TodoFgHACK = function(self) return {fg = self.Todo.fg} end,
|
|
|
|
|
TodoFgNOTE = 'HintMsg',
|
|
|
|
|
TodoFgPERF = 'InfoMsg',
|
|
|
|
|
TodoFgTODO = function(_) return {fg = cyan, style = 'italic'} end,
|
|
|
|
|
TodoFgWARN = function(self) return {fg = self.WarningMsg.fg} end,
|
|
|
|
|
|
|
|
|
|
TodoBgFIX = function(self)
|
|
|
|
|
return {
|
|
|
|
|
fg = c_bg,
|
|
|
|
|
bg = self.ErrorMsg.fg,
|
|
|
|
|
style = {'bold', 'italic', 'nocombine'}
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
TodoBgHACK = function(self)
|
|
|
|
|
return {
|
|
|
|
|
fg = c_bg,
|
|
|
|
|
bg = self.Todo.fg,
|
|
|
|
|
style = {'bold', 'italic', 'nocombine'}
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
TodoBgNOTE = function(self)
|
|
|
|
|
return {
|
|
|
|
|
fg = c_bg,
|
|
|
|
|
bg = self.Hint.bg,
|
|
|
|
|
style = {'bold', 'italic', 'nocombine'}
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
TodoBgPERF = function(self)
|
|
|
|
|
return {
|
|
|
|
|
fg = c_bg,
|
|
|
|
|
bg = self.Info.bg,
|
|
|
|
|
style = {'bold', 'italic', 'nocombine'}
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
TodoBgTODO = function(_)
|
|
|
|
|
return {fg = c_bg, bg = cyan, style = {'bold', 'italic', 'nocombine'}}
|
|
|
|
|
end,
|
|
|
|
|
TodoBgWARN = function(self)
|
|
|
|
|
return {
|
|
|
|
|
fg = c_bg,
|
|
|
|
|
bg = self.Warning.bg,
|
|
|
|
|
style = {'bold', 'italic', 'nocombine'}
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
|
|
TodoSignFIX = 'TodoFgFIX',
|
|
|
|
|
TodoSignHACK = 'TodoFgHACK',
|
|
|
|
|
TodoSignNOTE = 'TodoFgNOTE',
|
|
|
|
|
TodoSignPERF = 'TodoFgPERF',
|
|
|
|
|
TodoSignTODO = 'TodoFgTODO',
|
|
|
|
|
TodoSignWARN = 'TodoFgWARN',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.15. gitsigns.nvim ]]
|
|
|
|
|
GitSignsAdd = 'GitGutterAdd',
|
|
|
|
|
GitSignsChange = 'GitGutterChange',
|
|
|
|
|
GitSignsDelete = 'GitGutterDelete',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.16. nvim-compe ]]
|
|
|
|
|
CompeDocumentationBorder = 'FloatBorder',
|
|
|
|
|
|
|
|
|
|
--[[ 4.4.16. packer.nvim ]]
|
|
|
|
|
packerFail = 'ErrorMsg',
|
|
|
|
|
packerHash = 'Number',
|
|
|
|
|
packerPackageNotLoaded = 'Ignore',
|
|
|
|
|
packerStatusFail = 'Statement',
|
|
|
|
|
packerStatusSuccess = 'packerStatusFail',
|
|
|
|
|
packerSuccess = function(self)
|
|
|
|
|
return {fg = c_success, style = self.packerFail.style}
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
|
|
-- [[ 5.0.1 custom ]]
|
|
|
|
|
TabLineFill = 'StatusLine',
|
|
|
|
|
TabLineItem = {fg = c_fg, bg = c_bg_ui, style = 'italic'},
|
|
|
|
|
TabLineItemSel = {
|
|
|
|
|
fg = c_fg_strong,
|
|
|
|
|
bg = c_bg_ui,
|
|
|
|
|
style = {'italic', 'bold'}
|
|
|
|
|
},
|
|
|
|
|
TabLineNum = {fg = c_fg_weak, bg = c_bg_ui},
|
|
|
|
|
TabLineNumSel = {fg = c_fg_weak, bg = c_bg_ui}
|
2020-06-25 20:45:31 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
--[[ Step 5: Terminal Colors
|
|
|
|
|
Define the color palette used by :terminal when in GUI Vim
|
|
|
|
|
or in TUI Vim when 'termguicolors' is enabled. If this list
|
|
|
|
|
is empty or if it doesn't contain exactly 16 items, the corresponding
|
|
|
|
|
Vim variable won't be set.
|
|
|
|
|
|
|
|
|
|
The expected values are colors defined in step 3.
|
|
|
|
|
|
|
|
|
|
Terminal emulators use a basic palette of 16 colors that can be
|
|
|
|
|
addressed by CLI and TUI tools via their name or their index, from
|
|
|
|
|
0 to 15. The list is not really standardized but it is generally
|
|
|
|
|
assumed to look like this:
|
|
|
|
|
|
|
|
|
|
| Index | Name |
|
|
|
|
|
|:------:|:-------------:|
|
|
|
|
|
| 1 | black |
|
|
|
|
|
| 2 | darkred |
|
|
|
|
|
| 3 | darkgreen |
|
|
|
|
|
| 4 | darkyellow |
|
|
|
|
|
| 5 | darkblue |
|
|
|
|
|
| 6 | darkmagenta |
|
|
|
|
|
| 7 | darkcyan |
|
|
|
|
|
| 8 | gray |
|
|
|
|
|
| 9 | darkgray |
|
|
|
|
|
| 10 | red |
|
|
|
|
|
| 11 | green |
|
|
|
|
|
| 12 | yellow |
|
|
|
|
|
| 13 | blue |
|
|
|
|
|
| 14 | magenta |
|
|
|
|
|
| 15 | cyan |
|
|
|
|
|
| 16 | white |
|
|
|
|
|
|
|
|
|
|
While you are certainly free to make colors 0 to 7 shades of blue,
|
|
|
|
|
this will inevitably cause usability issues so… be careful.
|
|
|
|
|
]]
|
|
|
|
|
|
2021-08-03 23:42:30 +00:00
|
|
|
|
local terminal_colors = {
|
2022-03-21 12:09:44 +00:00
|
|
|
|
[1] = c_fg_stronger,
|
2022-03-13 19:41:41 +00:00
|
|
|
|
[2] = c_alert_strong,
|
|
|
|
|
[3] = c_2_strong,
|
|
|
|
|
[4] = c_alert,
|
|
|
|
|
[5] = c_3,
|
|
|
|
|
[6] = c_5_strong,
|
|
|
|
|
[7] = c_3_weak,
|
|
|
|
|
[8] = c_fg,
|
|
|
|
|
[9] = c_fg_strong,
|
|
|
|
|
[10] = c_alert,
|
|
|
|
|
[11] = c_2,
|
|
|
|
|
[12] = c_alert_weak,
|
|
|
|
|
[13] = c_3,
|
|
|
|
|
[14] = c_5,
|
|
|
|
|
[15] = c_bg_hl_special_strong,
|
2022-03-21 12:09:44 +00:00
|
|
|
|
[16] = c_bg_darkest
|
2020-06-25 20:45:31 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
--[[ Step 5: Sourcing
|
2020-07-02 17:06:31 +00:00
|
|
|
|
When you wish to load your colorscheme, simply add this folder with a plugin manager
|
|
|
|
|
and then use `colorscheme <your colorscheme name>`. For example, in my configuration,
|
2021-09-06 11:58:30 +00:00
|
|
|
|
I source paper-tonic by using `colorscheme paper-tonic`.
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
|
|
|
|
These online resources can help you design your colorscheme:
|
|
|
|
|
|
|
|
|
|
1. the xterm palette.
|
|
|
|
|
* http://upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
|
|
|
|
|
2. play with hexadecimal colors right in the address bar (currently down).
|
|
|
|
|
* http://whatcolor.herokuapp.com/
|
|
|
|
|
3. similar concept, fuzzier implementation.
|
|
|
|
|
* http://color.hailpixel.com/
|
|
|
|
|
4. similar concept, fancier implementation.
|
|
|
|
|
* http://colourco.de/
|
|
|
|
|
5. extract a palette from an image.
|
|
|
|
|
* http://www.colr.org/
|
|
|
|
|
6. search for 'word', get images and color palettes.
|
|
|
|
|
* http://colores.manugarri.com/
|
|
|
|
|
7. user-created palettes.
|
|
|
|
|
* http://www.colourlovers.com/palettes
|
|
|
|
|
8. a no-nonsense colorscheme generator.
|
|
|
|
|
* http://www.pluaang.dk/color+scheme/
|
|
|
|
|
9. Adobe's fancy colorscheme generator.
|
|
|
|
|
* https://color.adobe.com/
|
|
|
|
|
10. The classic 'Color Scheme Designer', rebranded.
|
|
|
|
|
* http://paletton.com/
|
|
|
|
|
11. A very smart palette generator.
|
|
|
|
|
* http://vrl.cs.brown.edu/color
|
|
|
|
|
12. 'I Made My Own Colour Scheme and You Can Too!'.
|
|
|
|
|
* https://cmcenroe.me/2018/04/03/colour-scheme.html
|
|
|
|
|
|
2020-07-02 17:06:31 +00:00
|
|
|
|
A few things to note:
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
2020-07-02 17:06:31 +00:00
|
|
|
|
* The Windows console (`cmd`) is limited to the 16 so-called 'ANSI' colors but it used to
|
2020-06-25 20:45:31 +00:00
|
|
|
|
have a few of them interverted which makes numbers impractical. Use color names
|
|
|
|
|
instead of numbers: :help cterm-colors
|
2020-07-02 17:06:31 +00:00
|
|
|
|
* The Windows console doesn't do italics, underlines or bolded text;
|
|
|
|
|
it is limited to normal and reverse. Keep that in mind if you want
|
|
|
|
|
your colorscheme to be usable in as many environments as possible by as many
|
|
|
|
|
people as possible.
|
|
|
|
|
* The Windows TERMINAL, however, is capable of more.
|
2020-06-25 20:45:31 +00:00
|
|
|
|
* All of the terminal emulators in use these days allow their users to
|
|
|
|
|
change the 16 so-called 'ANSI' colors. It is also possible on some platforms
|
|
|
|
|
to change some or all of the 256 colors in the xterm palette. Don't take
|
|
|
|
|
anything for granted.
|
|
|
|
|
* When used against a light background, strong colors work better than muted
|
|
|
|
|
ones. Light or dark doesn't really matters. Also, it is harder to discriminate
|
|
|
|
|
between two similar colors on a light background.
|
|
|
|
|
* Both strong and muted colors work well against a dark background. It is also
|
|
|
|
|
easier to work with similar colors, but dark colors don't work at all.
|
|
|
|
|
* Use as many text samples as possible. String-heavy languages may look completely
|
|
|
|
|
different than keyword-heavy ones. This can have an impact on the usability
|
|
|
|
|
of your colorscheme.
|
|
|
|
|
* Most terminal emulators and terminal multiplexers currently in use on unix-like
|
|
|
|
|
systems support 256 colors but they almost always default to a '$TERM' that tells
|
|
|
|
|
Vim otherwise. Your users will need to make sure their terminal emulator/multiplexer
|
|
|
|
|
is correctly set up if they want to enjoy the best possible experience.
|
|
|
|
|
]]
|
|
|
|
|
|
2022-03-13 19:41:41 +00:00
|
|
|
|
require(vim.g.colors_name)(highlight_group_normal, highlight_groups,
|
|
|
|
|
terminal_colors)
|
2020-06-25 20:45:31 +00:00
|
|
|
|
|
2020-07-16 01:37:03 +00:00
|
|
|
|
-- Thanks to Romain Lafourcade (https://github.com/romainl) for the original template (romainl/vim-rnb).
|