76 lines
2.3 KiB
Lua
76 lines
2.3 KiB
Lua
return {
|
|
{
|
|
"mini.hipatterns",
|
|
after = function(plugin)
|
|
local hipatterns = require("mini.hipatterns")
|
|
|
|
-- Returns hex color group for matching short hex color.
|
|
--
|
|
---@param match string
|
|
---@return string
|
|
local hex_color_short = function(_, match)
|
|
local style = 'fg' -- 'fg' or 'bg', for extmark_opts_inline use 'fg'
|
|
local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4)
|
|
local hex = string.format('#%s%s%s%s%s%s', r, r, g, g, b, b)
|
|
return hipatterns.compute_hex_color_group(hex, style)
|
|
end
|
|
|
|
-- Returns hex color group for matching alpha hex color.
|
|
--
|
|
---@param match string
|
|
---@return string
|
|
local hex_color_alpha = function(_, match)
|
|
local style = 'fg' -- 'fg' or 'bg', for extmark_opts_inline use 'fg'
|
|
local r, g, b = match:sub(2, 3), match:sub(4, 5), match:sub(6, 7)
|
|
local hex = string.format('#%s%s%s', r, g, b)
|
|
return hipatterns.compute_hex_color_group(hex, style)
|
|
end
|
|
|
|
-- Returns extmark opts for highlights with virtual inline text.
|
|
--
|
|
---@param data table Includes `hl_group`, `full_match` and more.
|
|
---@return table
|
|
local extmark_opts_inline = function(_, _, data)
|
|
return {
|
|
virt_text = { { '', data.hl_group } },
|
|
virt_text_pos = 'inline',
|
|
right_gravity = false,
|
|
}
|
|
end
|
|
|
|
-- Returns extmark opts for highlights with virtual inline text.
|
|
--
|
|
---@param data table Includes `hl_group`, `full_match` and more.
|
|
---@return table
|
|
local extmark_opts_inline_alpha = function(_, _, data)
|
|
return {
|
|
virt_text = { { '', data.hl_group } },
|
|
virt_text_pos = 'inline',
|
|
right_gravity = false,
|
|
}
|
|
end
|
|
|
|
hipatterns.setup({
|
|
highlighters = {
|
|
-- #rrggbb
|
|
hex_color = hipatterns.gen_highlighter.hex_color({
|
|
style = "inline",
|
|
inline_text = '',
|
|
}),
|
|
-- #rgb
|
|
hex_color_short = {
|
|
pattern = "#%x%x%x%f[%X]",
|
|
group = hex_color_short,
|
|
extmark_opts = extmark_opts_inline,
|
|
},
|
|
-- #rrggbbaa
|
|
hex_color_alpha = {
|
|
pattern = "#%x%x%x%x%x%x%x%x%f[%X]",
|
|
group = hex_color_alpha,
|
|
extmark_opts = extmark_opts_inline_alpha,
|
|
},
|
|
},
|
|
})
|
|
end,
|
|
},
|
|
}
|