Added notermguicolor support and special effects (#27)
* Added notermguicolor support and special effects * Added notermgui support * Exposed special parameters for highlight(like bold,italic) to themes with gui like to bold "B" in normal mode do normal.b.gui = 'bold' * Changed CONTRIBUTING.md to reflect current notermguicolor support * Added calculating cterm values from rgb * refactored highlight function * Removed 'bold' default for a element * Updated themes * Adding function genarated cterm values to themes * Updating CONTRIBUTING.md * made colorschemes more compact Co-authored-by: hoob3rt <pelczarskihubert@gmail.com>
This commit is contained in:
parent
3de3eb289f
commit
7460fe5aa2
117
CONTRIBUTING.md
117
CONTRIBUTING.md
|
@ -18,117 +18,74 @@
|
|||
<summary><b>theme example</b></summary>
|
||||
|
||||
To create a custom theme you need to define a colorscheme for each of vim's modes. Each mode has a `fg` and `bg` field for every lualine section.
|
||||
This is really easy in lua. Here is and example of a gruvbox theme.
|
||||
You can add special effects with `gui`.
|
||||
You can provide colors in two ways
|
||||
1. As a table like `{'hexcode', 256_color_code}`
|
||||
2. As a String like `'hexcode'`
|
||||
Note : You can use `lualine.util.get_cterm_color(hex_color)` function to genarate 256_color_codes from hex_codes.
|
||||
When method 2 is used 256_color_codes are genarated with that .
|
||||
|
||||
Adding theme is really easy in lua. Here is and example of a gruvbox theme.
|
||||
|
||||
```lua
|
||||
local gruvbox = { }
|
||||
|
||||
local colors = {
|
||||
black = "#282828",
|
||||
white = '#ebdbb2',
|
||||
red = '#fb4934',
|
||||
green = '#b8bb26',
|
||||
blue = '#83a598',
|
||||
yellow = '#fe8019',
|
||||
-- color format { hex_color, 256_color_code}
|
||||
black = {"#282828", 235},
|
||||
white = {'#ebdbb2', 223},
|
||||
red = {'#fb4934', 203},
|
||||
green = {'#b8bb26', 143},
|
||||
blue = {'#83a598', 108},
|
||||
yellow = {'#fe8019', 209},
|
||||
|
||||
-- color format 'hex_color'
|
||||
gray = '#a89984',
|
||||
darkgray = '#3c3836',
|
||||
|
||||
lightgray = '#504945',
|
||||
inactivegray = '#7c6f64',
|
||||
}
|
||||
|
||||
gruvbox.normal = {
|
||||
a = {
|
||||
bg = colors.gray,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.darkgray,
|
||||
fg = colors.gray
|
||||
}
|
||||
-- gui parameter is optional and behaves the same way as in vim's highlight command
|
||||
a = { bg = colors.gray, fg = colors.black, gui = "bold", },
|
||||
b = { bg = colors.lightgray, fg = colors.white, },
|
||||
c = { bg = colors.darkgray, fg = colors.gray }
|
||||
}
|
||||
|
||||
gruvbox.insert = {
|
||||
a = {
|
||||
bg = colors.blue,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white
|
||||
}
|
||||
a = { bg = colors.blue, fg = colors.black, gui = "bold", },
|
||||
b = { bg = colors.lightgray, fg = colors.white, },
|
||||
c = { bg = colors.lightgray, fg = colors.white }
|
||||
}
|
||||
|
||||
|
||||
gruvbox.visual = {
|
||||
a = {
|
||||
bg = colors.yellow,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.inactivegray,
|
||||
fg = colors.black
|
||||
},
|
||||
a = { bg = colors.yellow, fg = colors.black, gui = "bold", },
|
||||
b = { bg = colors.lightgray, fg = colors.white, },
|
||||
c = { bg = colors.inactivegray, fg = colors.black },
|
||||
}
|
||||
|
||||
gruvbox.replace = {
|
||||
a = {
|
||||
bg = colors.red,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.black,
|
||||
fg = colors.white
|
||||
},
|
||||
a = { bg = colors.red, fg = colors.black, gui = "bold", },
|
||||
b = { bg = colors.lightgray, fg = colors.white, },
|
||||
c = { bg = colors.black, fg = colors.white },
|
||||
}
|
||||
|
||||
gruvbox.command = {
|
||||
a = {
|
||||
bg = colors.green,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.inactivegray,
|
||||
fg = colors.black
|
||||
},
|
||||
a = { bg = colors.green, fg = colors.black, gui = "bold", },
|
||||
b = { bg = colors.lightgray, fg = colors.white, },
|
||||
c = { bg = colors.inactivegray, fg = colors.black },
|
||||
}
|
||||
|
||||
-- you can assign one colorscheme to another, if a colorscheme is
|
||||
-- undefined it falls back to normal
|
||||
gruvbox.terminal = gruvbox.normal
|
||||
|
||||
gruvbox.inactive = {
|
||||
a = {
|
||||
bg = colors.darkgray,
|
||||
fg = colors.gray,
|
||||
},
|
||||
b = {
|
||||
bg = colors.darkgray,
|
||||
fg = colors.gray,
|
||||
},
|
||||
c = {
|
||||
bg = colors.darkgray,
|
||||
fg = colors.gray
|
||||
},
|
||||
a = { bg = colors.darkgray, fg = colors.gray, gui = "bold", },
|
||||
b = { bg = colors.darkgray, fg = colors.gray, },
|
||||
c = { bg = colors.darkgray, fg = colors.gray },
|
||||
}
|
||||
|
||||
lualine.theme = gruvbox
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
local M = { }
|
||||
local utils = require "lualine.utils"
|
||||
|
||||
local function highlight (name, foreground, background, special)
|
||||
local function highlight (name, foreground, background, gui)
|
||||
local command = {
|
||||
'highlight', name,
|
||||
'guifg=' .. foreground,
|
||||
'guibg=' .. background,
|
||||
'gui=' .. (special or 'none'),
|
||||
'ctermfg=' .. (foreground[2] or utils.get_cterm_color(foreground)),
|
||||
'ctermbg=' .. (background[2] or utils.get_cterm_color(background)),
|
||||
'cterm=' .. (gui or 'none'),
|
||||
'guifg=' .. (foreground[1] or foreground),
|
||||
'guibg=' .. (background[1] or background),
|
||||
'gui=' .. (gui or 'none'),
|
||||
}
|
||||
return table.concat(command, ' ')
|
||||
end
|
||||
|
@ -28,12 +32,8 @@ function M.create_highlight_groups(theme)
|
|||
apply_defaults_to_theme(theme)
|
||||
for mode, sections in pairs(theme) do
|
||||
for section, colorscheme in pairs(sections) do
|
||||
local special = nil
|
||||
if section == 'a' then
|
||||
special = 'bold'
|
||||
end
|
||||
local highlight_group_name = { 'lualine', section, mode }
|
||||
vim.cmd(highlight(table.concat(highlight_group_name, '_'), colorscheme.fg, colorscheme.bg, special))
|
||||
vim.cmd(highlight(table.concat(highlight_group_name, '_'), colorscheme.fg, colorscheme.bg, colorscheme.gui))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,109 +1,51 @@
|
|||
local M = { }
|
||||
local dracula = {}
|
||||
|
||||
local colors = {
|
||||
grey = "#44475a",
|
||||
light_gray = "#5f6a8e",
|
||||
orange = "#ffb86c",
|
||||
purple = "#bd93f9",
|
||||
red = "#ff5555",
|
||||
yellow = "#f1fa8c",
|
||||
green = "#50fa7b",
|
||||
|
||||
white = "#f8f8f2",
|
||||
black = "#282a36",
|
||||
grey = {"#44475a", 238},
|
||||
light_gray = {"#5f6a8e", 60 },
|
||||
orange = {"#ffb86c", 215},
|
||||
purple = {"#bd93f9", 141},
|
||||
red = {"#ff5555", 203},
|
||||
yellow = {"#f1fa8c", 228},
|
||||
green = {"#50fa7b", 84 },
|
||||
white = {"#f8f8f2", 255},
|
||||
black = {"#282a36", 236},
|
||||
}
|
||||
|
||||
M.normal = {
|
||||
a = {
|
||||
bg = colors.purple,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.light_gray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.grey,
|
||||
fg = colors.white,
|
||||
}
|
||||
dracula.normal = {
|
||||
a = { bg = colors.purple, fg = colors.black, gui = 'bold', },
|
||||
b = { bg = colors.light_gray, fg = colors.white, },
|
||||
c = { bg = colors.grey, fg = colors.white, }
|
||||
}
|
||||
|
||||
M.insert = {
|
||||
a = {
|
||||
bg = colors.green,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.light_gray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.grey,
|
||||
fg = colors.white,
|
||||
}
|
||||
dracula.insert = {
|
||||
a = { bg = colors.green, fg = colors.black, gui = 'bold', },
|
||||
b = { bg = colors.light_gray, fg = colors.white, },
|
||||
c = { bg = colors.grey, fg = colors.white, }
|
||||
}
|
||||
|
||||
|
||||
M.visual = {
|
||||
a = {
|
||||
bg = colors.yellow,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.light_gray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.grey,
|
||||
fg = colors.white,
|
||||
},
|
||||
dracula.visual = {
|
||||
a = { bg = colors.yellow, fg = colors.black, gui = 'bold', },
|
||||
b = { bg = colors.light_gray, fg = colors.white, },
|
||||
c = { bg = colors.grey, fg = colors.white, },
|
||||
}
|
||||
|
||||
M.replace = {
|
||||
a = {
|
||||
bg = colors.red,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.light_gray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.grey,
|
||||
fg = colors.white,
|
||||
},
|
||||
dracula.replace = {
|
||||
a = { bg = colors.red, fg = colors.black, gui = 'bold', },
|
||||
b = { bg = colors.light_gray, fg = colors.white, },
|
||||
c = { bg = colors.grey, fg = colors.white, },
|
||||
}
|
||||
|
||||
M.command = {
|
||||
a = {
|
||||
bg = colors.grey,
|
||||
fg = colors.white,
|
||||
},
|
||||
b = {
|
||||
bg = colors.light_gray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.purple,
|
||||
fg = colors.white
|
||||
},
|
||||
dracula.command = {
|
||||
a = { bg = colors.grey, fg = colors.white, gui = 'bold', },
|
||||
b = { bg = colors.light_gray, fg = colors.white, },
|
||||
c = { bg = colors.purple, fg = colors.white },
|
||||
}
|
||||
|
||||
M.terminal = M.normal
|
||||
|
||||
M.inactive = {
|
||||
a = {
|
||||
bg = colors.white,
|
||||
fg = colors.purple,
|
||||
},
|
||||
b = {
|
||||
bg = colors.grey,
|
||||
fg = colors.purple,
|
||||
},
|
||||
c = {
|
||||
bg = colors.purple,
|
||||
fg = colors.purple,
|
||||
},
|
||||
dracula.inactive = {
|
||||
a = { bg = colors.white, fg = colors.purple, gui = 'bold', },
|
||||
b = { bg = colors.grey, fg = colors.purple, },
|
||||
c = { bg = colors.purple, fg = colors.purple, },
|
||||
}
|
||||
|
||||
return M
|
||||
return dracula
|
||||
|
|
|
@ -1,121 +1,58 @@
|
|||
local forest_night = {}
|
||||
|
||||
local colors = {
|
||||
bg0 = "#323d43",
|
||||
bg1 = "#3c474d",
|
||||
bg3 = "#505a60",
|
||||
fg = "#d8caac",
|
||||
aqua = "#87c095",
|
||||
green = "#a7c080",
|
||||
orange = "#e39b7b",
|
||||
purple = "#d39bb6",
|
||||
red = "#e68183",
|
||||
grey1 = "#868d80",
|
||||
bg0 = {"#323d43", 237},
|
||||
bg1 = {"#3c474d", 238},
|
||||
bg3 = {"#505a60", 240},
|
||||
fg = {"#d8caac", 187},
|
||||
aqua = {"#87c095", 108},
|
||||
green = {"#a7c080", 144},
|
||||
orange = {"#e39b7b", 180},
|
||||
purple = {"#d39bb6", 181},
|
||||
red = {"#e68183", 174},
|
||||
grey1 = {"#868d80", 102},
|
||||
}
|
||||
|
||||
forest_night.normal = {
|
||||
a = {
|
||||
bg = colors.green,
|
||||
fg = colors.bg0,
|
||||
},
|
||||
b = {
|
||||
bg = colors.bg3,
|
||||
fg = colors.fg,
|
||||
},
|
||||
c = {
|
||||
bg = colors.bg1,
|
||||
fg = colors.fg,
|
||||
},
|
||||
a = { bg = colors.green, fg = colors.bg0, gui = 'bold', },
|
||||
b = { bg = colors.bg3, fg = colors.fg, },
|
||||
c = { bg = colors.bg1, fg = colors.fg, },
|
||||
}
|
||||
|
||||
forest_night.insert = {
|
||||
a = {
|
||||
bg = colors.fg,
|
||||
fg = colors.bg0,
|
||||
},
|
||||
b = {
|
||||
bg = colors.bg3,
|
||||
fg = colors.fg,
|
||||
},
|
||||
c = {
|
||||
bg = colors.bg1,
|
||||
fg = colors.fg,
|
||||
},
|
||||
a = { bg = colors.fg, fg = colors.bg0, gui = 'bold', },
|
||||
b = { bg = colors.bg3, fg = colors.fg, },
|
||||
c = { bg = colors.bg1, fg = colors.fg, },
|
||||
}
|
||||
|
||||
forest_night.visual = {
|
||||
a = {
|
||||
bg = colors.red,
|
||||
fg = colors.bg0,
|
||||
},
|
||||
b = {
|
||||
bg = colors.bg3,
|
||||
fg = colors.fg,
|
||||
},
|
||||
c = {
|
||||
bg = colors.bg1,
|
||||
fg = colors.fg,
|
||||
},
|
||||
a = { bg = colors.red, fg = colors.bg0, gui = 'bold', },
|
||||
b = { bg = colors.bg3, fg = colors.fg, },
|
||||
c = { bg = colors.bg1, fg = colors.fg, },
|
||||
}
|
||||
|
||||
forest_night.replace = {
|
||||
a = {
|
||||
bg = colors.orange,
|
||||
fg = colors.bg0,
|
||||
},
|
||||
b = {
|
||||
bg = colors.bg3,
|
||||
fg = colors.fg,
|
||||
},
|
||||
c = {
|
||||
bg = colors.bg1,
|
||||
fg = colors.fg,
|
||||
},
|
||||
a = { bg = colors.orange, fg = colors.bg0, gui = 'bold', },
|
||||
b = { bg = colors.bg3, fg = colors.fg, },
|
||||
c = { bg = colors.bg1, fg = colors.fg, },
|
||||
}
|
||||
|
||||
forest_night.command = {
|
||||
a = {
|
||||
bg = colors.aqua,
|
||||
fg = colors.bg0,
|
||||
},
|
||||
b = {
|
||||
bg = colors.bg3,
|
||||
fg = colors.fg,
|
||||
},
|
||||
c = {
|
||||
bg = colors.bg1,
|
||||
fg = colors.fg,
|
||||
},
|
||||
a = { bg = colors.aqua, fg = colors.bg0, gui = 'bold', },
|
||||
b = { bg = colors.bg3, fg = colors.fg, },
|
||||
c = { bg = colors.bg1, fg = colors.fg, },
|
||||
}
|
||||
|
||||
forest_night.terminal = {
|
||||
a = {
|
||||
bg = colors.purple,
|
||||
fg = colors.bg0,
|
||||
},
|
||||
b = {
|
||||
bg = colors.bg3,
|
||||
fg = colors.fg,
|
||||
},
|
||||
c = {
|
||||
bg = colors.bg1,
|
||||
fg = colors.fg,
|
||||
},
|
||||
a = { bg = colors.purple, fg = colors.bg0, gui = 'bold', },
|
||||
b = { bg = colors.bg3, fg = colors.fg, },
|
||||
c = { bg = colors.bg1, fg = colors.fg, },
|
||||
}
|
||||
|
||||
forest_night.inactive = {
|
||||
a = {
|
||||
bg = colors.bg1,
|
||||
fg = colors.grey1,
|
||||
},
|
||||
b = {
|
||||
bg = colors.bg1,
|
||||
fg = colors.grey1,
|
||||
},
|
||||
c = {
|
||||
bg = colors.bg1,
|
||||
fg = colors.grey1,
|
||||
},
|
||||
a = { bg = colors.bg1, fg = colors.grey1, gui = 'bold', },
|
||||
b = { bg = colors.bg1, fg = colors.grey1, },
|
||||
c = { bg = colors.bg1, fg = colors.grey1, },
|
||||
}
|
||||
|
||||
return forest_night
|
||||
|
|
|
@ -1,111 +1,53 @@
|
|||
local M = { }
|
||||
local gruvbox = {}
|
||||
|
||||
local colors = {
|
||||
black = "#282828",
|
||||
white = '#ebdbb2',
|
||||
red = '#fb4934',
|
||||
green = '#b8bb26',
|
||||
blue = '#83a598',
|
||||
yellow = '#fe8019',
|
||||
|
||||
gray = '#a89984',
|
||||
darkgray = '#3c3836',
|
||||
|
||||
lightgray = '#504945',
|
||||
inactivegray = '#7c6f64',
|
||||
black = {"#282828", 235},
|
||||
white = {'#ebdbb2', 223},
|
||||
red = {'#fb4934', 203},
|
||||
green = {'#b8bb26', 143},
|
||||
blue = {'#83a598', 108},
|
||||
yellow = {'#fe8019', 209},
|
||||
gray = {'#a89984', 144},
|
||||
darkgray = {'#3c3836', 237},
|
||||
lightgray = {'#504945', 239},
|
||||
inactivegray = {'#7c6f64', 242},
|
||||
}
|
||||
|
||||
M.normal = {
|
||||
a = {
|
||||
bg = colors.gray,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.darkgray,
|
||||
fg = colors.gray
|
||||
}
|
||||
gruvbox.normal = {
|
||||
a = { bg = colors.gray, fg = colors.black, gui = 'bold', },
|
||||
b = { bg = colors.lightgray, fg = colors.white, },
|
||||
c = { bg = colors.darkgray, fg = colors.gray }
|
||||
}
|
||||
|
||||
M.insert = {
|
||||
a = {
|
||||
bg = colors.blue,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white
|
||||
}
|
||||
gruvbox.insert = {
|
||||
a = { bg = colors.blue, fg = colors.black, gui = 'bold', },
|
||||
b = { bg = colors.lightgray, fg = colors.white, },
|
||||
c = { bg = colors.lightgray, fg = colors.white }
|
||||
}
|
||||
|
||||
|
||||
M.visual = {
|
||||
a = {
|
||||
bg = colors.yellow,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.inactivegray,
|
||||
fg = colors.black
|
||||
},
|
||||
gruvbox.visual = {
|
||||
a = { bg = colors.yellow, fg = colors.black, gui = 'bold', },
|
||||
b = { bg = colors.lightgray, fg = colors.white, },
|
||||
c = { bg = colors.inactivegray, fg = colors.black },
|
||||
}
|
||||
|
||||
M.replace = {
|
||||
a = {
|
||||
bg = colors.red,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.black,
|
||||
fg = colors.white
|
||||
},
|
||||
gruvbox.replace = {
|
||||
a = { bg = colors.red, fg = colors.black, gui = 'bold', },
|
||||
b = { bg = colors.lightgray, fg = colors.white, },
|
||||
c = { bg = colors.black, fg = colors.white },
|
||||
}
|
||||
|
||||
M.command = {
|
||||
a = {
|
||||
bg = colors.green,
|
||||
fg = colors.black,
|
||||
},
|
||||
b = {
|
||||
bg = colors.lightgray,
|
||||
fg = colors.white,
|
||||
},
|
||||
c = {
|
||||
bg = colors.inactivegray,
|
||||
fg = colors.black
|
||||
},
|
||||
gruvbox.command = {
|
||||
a = { bg = colors.green, fg = colors.black, gui = 'bold', },
|
||||
b = { bg = colors.lightgray, fg = colors.white, },
|
||||
c = { bg = colors.inactivegray, fg = colors.black },
|
||||
}
|
||||
|
||||
M.terminal = M.normal
|
||||
|
||||
M.inactive = {
|
||||
a = {
|
||||
bg = colors.darkgray,
|
||||
fg = colors.gray,
|
||||
},
|
||||
b = {
|
||||
bg = colors.darkgray,
|
||||
fg = colors.gray,
|
||||
},
|
||||
c = {
|
||||
bg = colors.darkgray,
|
||||
fg = colors.gray
|
||||
},
|
||||
gruvbox.inactive = {
|
||||
a = { bg = colors.darkgray, fg = colors.gray, gui = 'bold', },
|
||||
b = { bg = colors.darkgray, fg = colors.gray, },
|
||||
c = { bg = colors.darkgray, fg = colors.gray },
|
||||
}
|
||||
|
||||
return M
|
||||
return gruvbox
|
||||
|
|
|
@ -1,76 +1,37 @@
|
|||
local M = { }
|
||||
local nord = {}
|
||||
|
||||
local colors = {
|
||||
nord1 = "#3B4252",
|
||||
nord3 = "#4C566A",
|
||||
nord5 = "#E5E9F0",
|
||||
nord6 = "#ECEFF4",
|
||||
nord7 = "#8FBCBB",
|
||||
nord8 = "#88C0D0",
|
||||
nord13 = "#EBCB8B",
|
||||
|
||||
nord1 = {"#3B4252", 237},
|
||||
nord3 = {"#4C566A", 240},
|
||||
nord5 = {"#E5E9F0", 254},
|
||||
nord6 = {"#ECEFF4", 255},
|
||||
nord7 = {"#8FBCBB", 158},
|
||||
nord8 = {"#88C0D0", 159},
|
||||
nord13 = {"#EBCB8B", 221},
|
||||
}
|
||||
|
||||
M.normal = {
|
||||
a = {
|
||||
fg = colors.nord1,
|
||||
bg = colors.nord8,
|
||||
},
|
||||
b = {
|
||||
fg = colors.nord5,
|
||||
bg = colors.nord1,
|
||||
},
|
||||
c = {
|
||||
fg = colors.nord5,
|
||||
bg = colors.nord3,
|
||||
}
|
||||
nord.normal = {
|
||||
a = { fg = colors.nord1, bg = colors.nord8, gui = 'bold', },
|
||||
b = { fg = colors.nord5, bg = colors.nord1, },
|
||||
c = { fg = colors.nord5, bg = colors.nord3, }
|
||||
}
|
||||
|
||||
M.insert = {
|
||||
a = {
|
||||
fg = colors.nord1,
|
||||
bg = colors.nord6,
|
||||
},
|
||||
b = M.normal.b,
|
||||
c = M.normal.c,
|
||||
nord.insert = {
|
||||
a = { fg = colors.nord1, bg = colors.nord6, gui = 'bold', },
|
||||
}
|
||||
|
||||
|
||||
M.visual = {
|
||||
a = {
|
||||
fg = colors.nord1,
|
||||
bg = colors.nord7,
|
||||
},
|
||||
b = M.normal.b,
|
||||
c = M.normal.c,
|
||||
nord.visual = {
|
||||
a = { fg = colors.nord1, bg = colors.nord7, gui = 'bold', },
|
||||
}
|
||||
|
||||
M.replace = {
|
||||
a = {
|
||||
fg = colors.nord1,
|
||||
bg = colors.nord13,
|
||||
},
|
||||
b = M.normal.b,
|
||||
c = M.normal.c,
|
||||
nord.replace = {
|
||||
a = { fg = colors.nord1, bg = colors.nord13, gui = 'bold', },
|
||||
}
|
||||
|
||||
M.command = M.normal
|
||||
|
||||
M.terminal = M.normal
|
||||
|
||||
M.inactive = {
|
||||
a = {
|
||||
fg = colors.nord1,
|
||||
bg = colors.nord8,
|
||||
},
|
||||
b = {
|
||||
fg = colors.nord5,
|
||||
bg = colors.nord1,
|
||||
},
|
||||
c = {
|
||||
fg = colors.nord5,
|
||||
bg = colors.nord1,
|
||||
},
|
||||
nord.inactive = {
|
||||
a = { fg = colors.nord1, bg = colors.nord8, gui = 'bold', },
|
||||
b = { fg = colors.nord5, bg = colors.nord1, },
|
||||
c = { fg = colors.nord5, bg = colors.nord1, },
|
||||
}
|
||||
|
||||
return M
|
||||
return nord
|
||||
|
|
|
@ -1,102 +1,44 @@
|
|||
local M = { }
|
||||
local onedark = {}
|
||||
|
||||
local colors = {
|
||||
red = "#E06C75",
|
||||
dark_red = "#BE5046",
|
||||
green = "#98C379",
|
||||
yellow = "#E5C07B",
|
||||
dark_yellow = "#D19A66",
|
||||
blue = "#61AFEF",
|
||||
purple = "#C678DD",
|
||||
cyan = "#56B6C2",
|
||||
white = "#ABB2BF",
|
||||
black = "#282C34",
|
||||
visual_black = "NONE",
|
||||
comment_grey = "#5C6370",
|
||||
gutter_fg_grey = "#4B5263",
|
||||
cursor_grey = "#2C323C",
|
||||
visual_grey = "#3E4452",
|
||||
menu_grey = "#3E4452",
|
||||
special_grey = "#3B4048",
|
||||
vertsplit = "#181A1F",
|
||||
red = {"#E06C75", 168},
|
||||
dark_red = {"#BE5046", 131},
|
||||
green = {"#98C379", 114},
|
||||
blue = {"#61AFEF", 75 },
|
||||
purple = {"#C678DD", 176},
|
||||
white = {"#ABB2BF", 249},
|
||||
black = {"#282C34", 236},
|
||||
visual_grey = {"#3E4452", 238},
|
||||
}
|
||||
|
||||
M.normal = {
|
||||
a = {
|
||||
fg = colors.black,
|
||||
bg = colors.green,
|
||||
},
|
||||
b = {
|
||||
fg = colors.white,
|
||||
bg = colors.visual_grey,
|
||||
},
|
||||
c = {
|
||||
fg = colors.green,
|
||||
bg = colors.black,
|
||||
},
|
||||
onedark.normal = {
|
||||
a = { fg = colors.black, bg = colors.green, gui = 'bold', },
|
||||
b = { fg = colors.white, bg = colors.visual_grey, },
|
||||
c = { fg = colors.green, bg = colors.black, },
|
||||
}
|
||||
|
||||
M.insert = {
|
||||
a = {
|
||||
fg = colors.black,
|
||||
bg = colors.blue,
|
||||
},
|
||||
b = {
|
||||
fg = colors.white,
|
||||
bg = colors.visual_grey,
|
||||
},
|
||||
c = {
|
||||
fg = colors.blue,
|
||||
bg = colors.black,
|
||||
},
|
||||
onedark.insert = {
|
||||
a = { fg = colors.black, bg = colors.blue, gui = 'bold', },
|
||||
b = { fg = colors.white, bg = colors.visual_grey, },
|
||||
c = { fg = colors.blue, bg = colors.black, },
|
||||
}
|
||||
|
||||
M.visual = {
|
||||
a = {
|
||||
fg = colors.black,
|
||||
bg = colors.purple,
|
||||
},
|
||||
b = {
|
||||
fg = colors.white,
|
||||
bg = colors.visual_grey,
|
||||
},
|
||||
c = {
|
||||
fg = colors.purple,
|
||||
bg = colors.black,
|
||||
},
|
||||
onedark.visual = {
|
||||
a = { fg = colors.black, bg = colors.purple, gui = 'bold', },
|
||||
b = { fg = colors.white, bg = colors.visual_grey, },
|
||||
c = { fg = colors.purple, bg = colors.black, },
|
||||
}
|
||||
|
||||
M.replace = {
|
||||
a = {
|
||||
fg = colors.black,
|
||||
bg = colors.red,
|
||||
},
|
||||
b = {
|
||||
fg = colors.white,
|
||||
bg = colors.visual_grey,
|
||||
},
|
||||
c = {
|
||||
fg = colors.red,
|
||||
bg = colors.black,
|
||||
},
|
||||
onedark.replace = {
|
||||
a = { fg = colors.black, bg = colors.red, gui = 'bold', },
|
||||
b = { fg = colors.white, bg = colors.visual_grey, },
|
||||
c = { fg = colors.red, bg = colors.black, },
|
||||
}
|
||||
|
||||
M.terminal = M.normal
|
||||
M.command = M.normal
|
||||
|
||||
M.inactive = {
|
||||
a = {
|
||||
fg = colors.black,
|
||||
bg = colors.white,
|
||||
},
|
||||
b = {
|
||||
fg = colors.white,
|
||||
bg = colors.visual_grey,
|
||||
},
|
||||
c = {
|
||||
fg = colors.white,
|
||||
bg = colors.visual_grey,
|
||||
},
|
||||
onedark.inactive = {
|
||||
a = { fg = colors.black, bg = colors.white, gui = 'bold', },
|
||||
b = { fg = colors.white, bg = colors.visual_grey, },
|
||||
c = { fg = colors.white, bg = colors.visual_grey, },
|
||||
}
|
||||
|
||||
return M
|
||||
return onedark
|
||||
|
|
|
@ -1,88 +1,48 @@
|
|||
local M = { }
|
||||
local powerline = { }
|
||||
|
||||
local Colors = {
|
||||
white = '#ffffff',
|
||||
darkestgreen = '#005f00',
|
||||
brightgreen = '#afdf00',
|
||||
darkestcyan = '#005f5f',
|
||||
mediumcyan = '#87dfff',
|
||||
darkestblue = '#005f87',
|
||||
darkred = '#870000',
|
||||
brightred = '#df0000',
|
||||
brightorange = '#ff8700',
|
||||
gray1 = '#262626',
|
||||
gray2 = '#303030',
|
||||
gray4 = '#585858',
|
||||
gray5 = '#606060',
|
||||
gray7 = '#9e9e9e',
|
||||
gray10 = '#f0f0f0',
|
||||
white = {'#ffffff', 231},
|
||||
darkestgreen = {'#005f00', 22 },
|
||||
brightgreen = {'#afdf00', 148},
|
||||
darkestcyan = {'#005f5f', 23 },
|
||||
mediumcyan = {'#87dfff', 117},
|
||||
darkestblue = {'#005f87', 24 },
|
||||
darkred = {'#870000', 88 },
|
||||
brightred = {'#df0000', 160},
|
||||
brightorange = {'#ff8700', 214},
|
||||
gray1 = {'#262626', 235},
|
||||
gray2 = {'#303030', 236},
|
||||
gray4 = {'#585858', 240},
|
||||
gray5 = {'#606060', 241},
|
||||
gray7 = {'#9e9e9e', 245},
|
||||
gray10 = {'#f0f0f0', 252},
|
||||
}
|
||||
|
||||
M.normal = {
|
||||
a = {
|
||||
fg = Colors.darkestgreen,
|
||||
bg = Colors.brightgreen,
|
||||
},
|
||||
b = {
|
||||
fg = Colors.gray10,
|
||||
bg = Colors.gray5,
|
||||
},
|
||||
c = {
|
||||
fg = Colors.gray7,
|
||||
bg = Colors.gray2,
|
||||
},
|
||||
powerline.normal = {
|
||||
a = { fg = Colors.darkestgreen, bg = Colors.brightgreen, gui = 'bold', },
|
||||
b = { fg = Colors.gray10, bg = Colors.gray5, },
|
||||
c = { fg = Colors.gray7, bg = Colors.gray2, },
|
||||
}
|
||||
|
||||
M.insert = {
|
||||
a = {
|
||||
fg = Colors.darkestcyan,
|
||||
bg = Colors.white,
|
||||
},
|
||||
b = {
|
||||
fg = Colors.darkestcyan,
|
||||
bg = Colors.mediumcyan,
|
||||
},
|
||||
c = {
|
||||
fg = Colors.mediumcyan,
|
||||
bg = Colors.darkestblue,
|
||||
},
|
||||
powerline.insert = {
|
||||
a = { fg = Colors.darkestcyan, bg = Colors.white, gui = 'bold', },
|
||||
b = { fg = Colors.darkestcyan, bg = Colors.mediumcyan, },
|
||||
c = { fg = Colors.mediumcyan, bg = Colors.darkestblue, },
|
||||
}
|
||||
|
||||
|
||||
M.visual = {
|
||||
a = {
|
||||
fg = Colors.darkred,
|
||||
bg = Colors.brightorange,
|
||||
},
|
||||
b = M.normal.b,
|
||||
c = M.normal.c,
|
||||
powerline.visual = {
|
||||
a = { fg = Colors.darkred, bg = Colors.brightorange, gui = 'bold', },
|
||||
}
|
||||
|
||||
M.replace = {
|
||||
a = {
|
||||
fg = Colors.white,
|
||||
bg = Colors.brightred,
|
||||
},
|
||||
b = M.normal.b,
|
||||
c = M.normal.c,
|
||||
powerline.replace = {
|
||||
a = { fg = Colors.white, bg = Colors.brightred, gui = 'bold', },
|
||||
}
|
||||
|
||||
M.command = M.normal
|
||||
M.terminal = M.normal
|
||||
|
||||
M.inactive = {
|
||||
a = {
|
||||
fg = Colors.gray1,
|
||||
bg = Colors.gray5,
|
||||
},
|
||||
b = {
|
||||
fg = Colors.gray1,
|
||||
bg = Colors.gray5,
|
||||
},
|
||||
c = {
|
||||
bg = Colors.gray1,
|
||||
fg = Colors.gray5,
|
||||
},
|
||||
powerline.inactive = {
|
||||
a = { fg = Colors.gray1, bg = Colors.gray5, gui = 'bold', },
|
||||
b = { fg = Colors.gray1, bg = Colors.gray5, },
|
||||
c = { bg = Colors.gray1, fg = Colors.gray5, },
|
||||
}
|
||||
|
||||
return M
|
||||
return powerline
|
||||
|
|
|
@ -18,4 +18,301 @@ function M.draw_section(section, separator)
|
|||
return ' ' .. table.concat(status, sep) .. ' '
|
||||
end
|
||||
|
||||
-- color conversion
|
||||
local color_table = {
|
||||
-- lookup table for cterm colors
|
||||
-- format {'color_code', {r,g,b}}
|
||||
|
||||
-- Primary 3-bit (8 colors). Unique representation!
|
||||
{'00', { 0, 0, 0 }},
|
||||
{'01', { 128, 0, 0 }},
|
||||
{'02', { 0, 128, 0 }},
|
||||
{'03', { 128, 128, 0 }},
|
||||
{'04', { 0, 0, 128 }},
|
||||
{'05', { 128, 0, 128 }},
|
||||
{'06', { 0, 128, 128 }},
|
||||
{'07', { 192, 192, 192 }},
|
||||
|
||||
-- equivalent "bright" versions of original 8 colors.
|
||||
{'08', { 128, 128, 128 }},
|
||||
{'09', { 255, 0, 0 }},
|
||||
{'10', { 0, 255, 0 }},
|
||||
{'11', { 255, 255, 0 }},
|
||||
{'12', { 0, 0, 255 }},
|
||||
{'13', { 255, 0, 255 }},
|
||||
{'14', { 0, 255, 255 }},
|
||||
{'15', { 255, 255, 255 }},
|
||||
|
||||
-- Strictly ascending.
|
||||
{'16', { 0, 0, 0 }},
|
||||
{'17', { 0, 0, 95 }},
|
||||
{'18', { 0, 0, 135 }},
|
||||
{'19', { 0, 0, 175 }},
|
||||
{'20', { 0, 0, 215 }},
|
||||
{'21', { 0, 0, 255 }},
|
||||
{'22', { 0, 95, 0 }},
|
||||
{'23', { 0, 95, 95 }},
|
||||
{'24', { 0, 95, 135 }},
|
||||
{'25', { 0, 95, 175 }},
|
||||
{'26', { 0, 95, 215 }},
|
||||
{'27', { 0, 95, 255 }},
|
||||
{'28', { 0, 135, 0 }},
|
||||
{'29', { 0, 135, 95 }},
|
||||
{'30', { 0, 135, 135 }},
|
||||
{'31', { 0, 135, 175 }},
|
||||
{'32', { 0, 135, 215 }},
|
||||
{'33', { 0, 135, 255 }},
|
||||
{'34', { 0, 175, 0 }},
|
||||
{'35', { 0, 175, 95 }},
|
||||
{'36', { 0, 175, 135 }},
|
||||
{'37', { 0, 175, 175 }},
|
||||
{'38', { 0, 175, 215 }},
|
||||
{'39', { 0, 175, 255 }},
|
||||
{'40', { 0, 215, 0 }},
|
||||
{'41', { 0, 215, 95 }},
|
||||
{'42', { 0, 215, 135 }},
|
||||
{'43', { 0, 215, 175 }},
|
||||
{'44', { 0, 215, 215 }},
|
||||
{'45', { 0, 215, 255 }},
|
||||
{'46', { 0, 255, 0 }},
|
||||
{'47', { 0, 255, 95 }},
|
||||
{'48', { 0, 255, 135 }},
|
||||
{'49', { 0, 255, 175 }},
|
||||
{'50', { 0, 255, 215 }},
|
||||
{'51', { 0, 255, 255 }},
|
||||
{'52', { 95, 0, 0 }},
|
||||
{'53', { 95, 0, 95 }},
|
||||
{'54', { 95, 0, 135 }},
|
||||
{'55', { 95, 0, 175 }},
|
||||
{'56', { 95, 0, 215 }},
|
||||
{'57', { 95, 0, 255 }},
|
||||
{'58', { 95, 95, 0 }},
|
||||
{'59', { 95, 95, 95 }},
|
||||
{'60', { 95, 95, 135 }},
|
||||
{'61', { 95, 95, 175 }},
|
||||
{'62', { 95, 95, 215 }},
|
||||
{'63', { 95, 95, 255 }},
|
||||
{'64', { 95, 135, 0 }},
|
||||
{'65', { 95, 135, 95 }},
|
||||
{'66', { 95, 135, 135 }},
|
||||
{'67', { 95, 135, 175 }},
|
||||
{'68', { 95, 135, 215 }},
|
||||
{'69', { 95, 135, 255 }},
|
||||
{'70', { 95, 175, 0 }},
|
||||
{'71', { 95, 175, 95 }},
|
||||
{'72', { 95, 175, 135 }},
|
||||
{'73', { 95, 175, 175 }},
|
||||
{'74', { 95, 175, 215 }},
|
||||
{'75', { 95, 175, 255 }},
|
||||
{'76', { 95, 215, 0 }},
|
||||
{'77', { 95, 215, 95 }},
|
||||
{'78', { 95, 215, 135 }},
|
||||
{'79', { 95, 215, 175 }},
|
||||
{'80', { 95, 215, 215 }},
|
||||
{'81', { 95, 215, 255 }},
|
||||
{'82', { 95, 255, 0 }},
|
||||
{'83', { 95, 255, 95 }},
|
||||
{'84', { 95, 255, 135 }},
|
||||
{'85', { 95, 255, 175 }},
|
||||
{'86', { 95, 255, 215 }},
|
||||
{'87', { 95, 255, 255 }},
|
||||
{'88', { 135, 0, 0 }},
|
||||
{'89', { 135, 0, 95 }},
|
||||
{'90', { 135, 0, 135 }},
|
||||
{'91', { 135, 0, 175 }},
|
||||
{'92', { 135, 0, 215 }},
|
||||
{'93', { 135, 0, 255 }},
|
||||
{'94', { 135, 95, 0 }},
|
||||
{'95', { 135, 95, 95 }},
|
||||
{'96', { 135, 95, 135 }},
|
||||
{'97', { 135, 95, 175 }},
|
||||
{'98', { 135, 95, 215 }},
|
||||
{'99', { 135, 95, 255 }},
|
||||
{'100', { 135, 135, 0 }},
|
||||
{'101', { 135, 135, 95 }},
|
||||
{'102', { 135, 135, 135 }},
|
||||
{'103', { 135, 135, 175 }},
|
||||
{'104', { 135, 135, 215 }},
|
||||
{'105', { 135, 135, 255 }},
|
||||
{'106', { 135, 175, 0 }},
|
||||
{'107', { 135, 175, 95 }},
|
||||
{'108', { 135, 175, 135 }},
|
||||
{'109', { 135, 175, 175 }},
|
||||
{'110', { 135, 175, 215 }},
|
||||
{'111', { 135, 175, 255 }},
|
||||
{'112', { 135, 215, 0 }},
|
||||
{'113', { 135, 215, 95 }},
|
||||
{'114', { 135, 215, 135 }},
|
||||
{'115', { 135, 215, 175 }},
|
||||
{'116', { 135, 215, 215 }},
|
||||
{'117', { 135, 215, 255 }},
|
||||
{'118', { 135, 255, 0 }},
|
||||
{'119', { 135, 255, 95 }},
|
||||
{'120', { 135, 255, 135 }},
|
||||
{'121', { 135, 255, 175 }},
|
||||
{'122', { 135, 255, 215 }},
|
||||
{'123', { 135, 255, 255 }},
|
||||
{'124', { 175, 0, 0 }},
|
||||
{'125', { 175, 0, 95 }},
|
||||
{'126', { 175, 0, 135 }},
|
||||
{'127', { 175, 0, 175 }},
|
||||
{'128', { 175, 0, 215 }},
|
||||
{'129', { 175, 0, 255 }},
|
||||
{'130', { 175, 95, 0 }},
|
||||
{'131', { 175, 95, 95 }},
|
||||
{'132', { 175, 95, 135 }},
|
||||
{'133', { 175, 95, 175 }},
|
||||
{'134', { 175, 95, 215 }},
|
||||
{'135', { 175, 95, 255 }},
|
||||
{'136', { 175, 135, 0 }},
|
||||
{'137', { 175, 135, 95 }},
|
||||
{'138', { 175, 135, 135 }},
|
||||
{'139', { 175, 135, 175 }},
|
||||
{'140', { 175, 135, 215 }},
|
||||
{'141', { 175, 135, 255 }},
|
||||
{'142', { 175, 175, 0 }},
|
||||
{'143', { 175, 175, 95 }},
|
||||
{'144', { 175, 175, 135 }},
|
||||
{'145', { 175, 175, 175 }},
|
||||
{'146', { 175, 175, 215 }},
|
||||
{'147', { 175, 175, 255 }},
|
||||
{'148', { 175, 215, 0 }},
|
||||
{'149', { 175, 215, 95 }},
|
||||
{'150', { 175, 215, 135 }},
|
||||
{'151', { 175, 215, 175 }},
|
||||
{'152', { 175, 215, 215 }},
|
||||
{'153', { 175, 215, 255 }},
|
||||
{'154', { 175, 255, 0 }},
|
||||
{'155', { 175, 255, 95 }},
|
||||
{'156', { 175, 255, 135 }},
|
||||
{'157', { 175, 255, 175 }},
|
||||
{'158', { 175, 255, 215 }},
|
||||
{'159', { 175, 255, 255 }},
|
||||
{'160', { 215, 0, 0 }},
|
||||
{'161', { 215, 0, 95 }},
|
||||
{'162', { 215, 0, 135 }},
|
||||
{'163', { 215, 0, 175 }},
|
||||
{'164', { 215, 0, 215 }},
|
||||
{'165', { 215, 0, 255 }},
|
||||
{'166', { 215, 95, 0 }},
|
||||
{'167', { 215, 95, 95 }},
|
||||
{'168', { 215, 95, 135 }},
|
||||
{'169', { 215, 95, 175 }},
|
||||
{'170', { 215, 95, 215 }},
|
||||
{'171', { 215, 95, 255 }},
|
||||
{'172', { 215, 135, 0 }},
|
||||
{'173', { 215, 135, 95 }},
|
||||
{'174', { 215, 135, 135 }},
|
||||
{'175', { 215, 135, 175 }},
|
||||
{'176', { 215, 135, 215 }},
|
||||
{'177', { 215, 135, 255 }},
|
||||
{'178', { 215, 175, 0 }},
|
||||
{'179', { 215, 175, 95 }},
|
||||
{'180', { 215, 175, 135 }},
|
||||
{'181', { 215, 175, 175 }},
|
||||
{'182', { 215, 175, 215 }},
|
||||
{'183', { 215, 175, 255 }},
|
||||
{'184', { 215, 215, 0 }},
|
||||
{'185', { 215, 215, 95 }},
|
||||
{'186', { 215, 215, 135 }},
|
||||
{'187', { 215, 215, 175 }},
|
||||
{'188', { 215, 215, 215 }},
|
||||
{'189', { 215, 215, 255 }},
|
||||
{'190', { 215, 255, 0 }},
|
||||
{'191', { 215, 255, 95 }},
|
||||
{'192', { 215, 255, 135 }},
|
||||
{'193', { 215, 255, 175 }},
|
||||
{'194', { 215, 255, 215 }},
|
||||
{'195', { 215, 255, 255 }},
|
||||
{'196', { 255, 0, 0 }},
|
||||
{'197', { 255, 0, 95 }},
|
||||
{'198', { 255, 0, 135 }},
|
||||
{'199', { 255, 0, 175 }},
|
||||
{'200', { 255, 0, 215 }},
|
||||
{'201', { 255, 0, 255 }},
|
||||
{'202', { 255, 95, 0 }},
|
||||
{'203', { 255, 95, 95 }},
|
||||
{'204', { 255, 95, 135 }},
|
||||
{'205', { 255, 95, 175 }},
|
||||
{'206', { 255, 95, 215 }},
|
||||
{'207', { 255, 95, 255 }},
|
||||
{'208', { 255, 135, 0 }},
|
||||
{'209', { 255, 135, 95 }},
|
||||
{'210', { 255, 135, 135 }},
|
||||
{'211', { 255, 135, 175 }},
|
||||
{'212', { 255, 135, 215 }},
|
||||
{'213', { 255, 135, 255 }},
|
||||
{'214', { 255, 175, 0 }},
|
||||
{'215', { 255, 175, 95 }},
|
||||
{'216', { 255, 175, 135 }},
|
||||
{'217', { 255, 175, 175 }},
|
||||
{'218', { 255, 175, 215 }},
|
||||
{'219', { 255, 175, 255 }},
|
||||
{'220', { 255, 215, 0 }},
|
||||
{'221', { 255, 215, 95 }},
|
||||
{'222', { 255, 215, 135 }},
|
||||
{'223', { 255, 215, 175 }},
|
||||
{'224', { 255, 215, 215 }},
|
||||
{'225', { 255, 215, 255 }},
|
||||
{'226', { 255, 255, 0 }},
|
||||
{'227', { 255, 255, 95 }},
|
||||
{'228', { 255, 255, 135 }},
|
||||
{'229', { 255, 255, 175 }},
|
||||
{'230', { 255, 255, 215 }},
|
||||
{'231', { 255, 255, 255 }},
|
||||
|
||||
-- Gray-scale range.
|
||||
{'232', { 8, 8, 8 }},
|
||||
{'233', { 18, 18, 18 }},
|
||||
{'234', { 28, 28, 28 }},
|
||||
{'235', { 38, 38, 38 }},
|
||||
{'236', { 48, 48, 48 }},
|
||||
{'237', { 58, 58, 58 }},
|
||||
{'238', { 68, 68, 68 }},
|
||||
{'239', { 78, 78, 78 }},
|
||||
{'240', { 88, 88, 88 }},
|
||||
{'241', { 98, 98, 98 }},
|
||||
{'242', { 108, 108, 108 }},
|
||||
{'243', { 118, 118, 118 }},
|
||||
{'244', { 128, 128, 128 }},
|
||||
{'245', { 138, 138, 138 }},
|
||||
{'246', { 148, 148, 148 }},
|
||||
{'247', { 158, 158, 158 }},
|
||||
{'248', { 168, 168, 168 }},
|
||||
{'249', { 178, 178, 178 }},
|
||||
{'250', { 188, 188, 188 }},
|
||||
{'251', { 198, 198, 198 }},
|
||||
{'252', { 208, 208, 208 }},
|
||||
{'253', { 218, 218, 218 }},
|
||||
{'254', { 228, 228, 228 }},
|
||||
{'255', { 238, 238, 238 }},
|
||||
}
|
||||
|
||||
function M.get_cterm_color(hex_color)
|
||||
local function get_color_distance(color1, color2)
|
||||
-- returns how much color2 deviates from color1
|
||||
local dr = math.abs(color1[1] - color2[1]) / (color1[1]+1) * 100
|
||||
local dg = math.abs(color1[2] - color2[2]) / (color1[2]+1) * 100
|
||||
local db = math.abs(color1[3] - color2[3]) / (color1[3]+1) * 100
|
||||
return (dr + dg + db)
|
||||
end
|
||||
|
||||
local r = tonumber(hex_color:sub(2,3), 16)
|
||||
local g = tonumber(hex_color:sub(4,5), 16)
|
||||
local b = tonumber(hex_color:sub(6,7), 16)
|
||||
|
||||
-- check which cterm color is closest to hex colors in terms of rgb values
|
||||
local closest_cterm_color = 0
|
||||
local min_distance = 10000
|
||||
for _, color in ipairs(color_table) do
|
||||
local current_distance = get_color_distance(color[2], {r,g,b})
|
||||
if current_distance < min_distance then
|
||||
min_distance = current_distance
|
||||
closest_cterm_color = color[1]
|
||||
end
|
||||
end
|
||||
return closest_cterm_color
|
||||
end
|
||||
|
||||
|
||||
return M
|
||||
|
|
Loading…
Reference in New Issue