lualine.nvim/lua/lualine/highlight.lua

62 lines
1.8 KiB
Lua
Raw Normal View History

2020-12-30 14:48:51 +00:00
local M = { }
local function highlight (name, foreground, background, special)
local command = {
'highlight', name,
'guifg=' .. foreground,
'guibg=' .. background,
'gui=' .. (special or 'none'),
}
return table.concat(command, ' ')
2020-12-30 14:48:51 +00:00
end
local function apply_defaults_to_theme(theme)
local modes = {'insert', 'visual', 'replace', 'command', 'terminal', 'inactive'}
for _, mode in ipairs(modes) do
if not theme[mode] then
theme[mode] = theme['normal']
else
for section_name, section in pairs(theme['normal']) do
theme[mode][section_name] = (theme[mode][section_name] or section)
end
end
end
return theme
end
function M.create_highlight_groups(theme)
apply_defaults_to_theme(theme)
2020-12-30 14:48:51 +00:00
for mode, sections in pairs(theme) do
for section, colorscheme in pairs(sections) do
local special = nil
2020-12-30 14:48:51 +00:00
if section == 'a' then
special = 'bold'
2020-12-30 14:48:51 +00:00
end
local highlight_group_name = { 'lualine', section, mode }
vim.cmd(highlight(table.concat(highlight_group_name, '_'), colorscheme.fg, colorscheme.bg, special))
2020-12-30 14:48:51 +00:00
end
end
end
function M.format_highlight(is_focused, highlight_group)
2020-12-30 14:48:51 +00:00
local mode = require('lualine.components.mode')()
highlight_group = [[%#]] .. highlight_group
if not is_focused then
highlight_group = highlight_group .. [[_inactive]]
2020-12-30 14:48:51 +00:00
else
if mode == 'V-BLOCK' or mode == 'V-LINE' then
highlight_group = highlight_group .. '_visual'
2020-12-30 14:48:51 +00:00
elseif mode == 'V-REPLACE' then
highlight_group = highlight_group .. '_replace'
2021-01-06 13:52:05 +00:00
elseif mode == 'SELECT' then
highlight_group = highlight_group .. '_terminal'
2020-12-30 14:48:51 +00:00
else
highlight_group = highlight_group .. '_' .. mode:lower()
2020-12-30 14:48:51 +00:00
end
end
highlight_group = highlight_group .. [[#]]
return highlight_group
2020-12-30 14:48:51 +00:00
end
return M