1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
-- Shamelessly stolen from
-- https://github.com/hoob3rt/lualine.nvim/blob/master/lua/lualine/utils/utils.lua
local M = {}
M.highlight = function(name, foreground, background)
local command = {'highlight', name}
if foreground and foreground ~= 'none' then
table.insert(command, 'guifg=' .. foreground)
end
if background and background ~= 'none' then
table.insert(command, 'guibg=' .. background)
end
vim.cmd(table.concat(command, ' '))
end
M.create_component_highlight_group = function(color, highlight_tag)
if color.bg and color.fg then
local highlight_group_name = table.concat({'luatab', highlight_tag}, '_')
M.highlight(highlight_group_name, color.fg, color.bg)
return highlight_group_name
end
end
M.extract_highlight_colors = function(color_group, scope)
if vim.fn.hlexists(color_group) == 0 then return nil end
local color = vim.api.nvim_get_hl_by_name(color_group, true)
if color.background ~= nil then
color.bg = string.format('#%06x', color.background)
color.background = nil
end
if color.foreground ~= nil then
color.fg = string.format('#%06x', color.foreground)
color.foreground = nil
end
if scope then return color[scope] end
return color
end
return M
|