aboutsummaryrefslogtreecommitdiff
path: root/lua/luatab/highlight.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/luatab/highlight.lua')
-rw-r--r--lua/luatab/highlight.lua40
1 files changed, 40 insertions, 0 deletions
diff --git a/lua/luatab/highlight.lua b/lua/luatab/highlight.lua
new file mode 100644
index 0000000..c696135
--- /dev/null
+++ b/lua/luatab/highlight.lua
@@ -0,0 +1,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