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, }, }