local template = [[local common_fg = "$common_fg" local inactive_bg = "$inactive_bg" local inactive_fg = "$inactive_fg" return { normal = { a = { bg = "$normal_a_bg", fg = common_fg, gui = "bold" }, b = { bg = "$normal_b_bg", fg = common_fg }, c = { bg = "$normal_c_bg", fg = "$normal_c_fg" }, }, insert = { a = { bg = "$insert_a_bg", fg = common_fg, gui = "bold" }, }, command = { a = { bg = "$command_a_bg", fg = common_fg, gui = "bold" }, }, visual = { a = { bg = "$visual_a_bg", fg = common_fg, gui = "bold" }, }, replace = { a = { bg = "$replace_a_bg", fg = common_fg, gui = "bold" }, }, inactive = { a = { bg = inactive_bg, fg = inactive_fg, gui = "bold" }, b = { bg = inactive_bg, fg = inactive_fg }, c = { bg = inactive_bg, fg = inactive_fg }, }, }]] local helpers = require "shipwright.transform.helpers" local check_keys = { "common_fg", "inactive_bg", "inactive_fg", "normal_a_bg", "normal_b_bg", "normal_c_bg", "normal_c_fg", "insert_a_bg", "command_a_bg", "visual_a_bg", "replace_a_bg", } local function to_lualine(colors) for _, key in ipairs(check_keys) do assert(colors[key], "lualine colors table missing key: " .. key) end local text = helpers.apply_template(template, colors) return { text } end local function specs_to_colors(colorscheme) local specs, background = unpack(colorscheme) local da = background == "light" and -3 or 3 return { common_fg = specs.Folded.fg, inactive_bg = specs.StatusLineNC.bg, inactive_fg = specs.StatusLineNC.fg, normal_a_bg = specs.PmenuSbar.bg.abs_da(da), normal_b_bg = specs.PmenuSel.bg.abs_da(da), normal_c_bg = specs.StatusLine.bg.abs_da(da), normal_c_fg = specs.StatusLine.fg, insert_a_bg = specs.DiffText.bg, command_a_bg = specs.Search.bg, visual_a_bg = specs.Visual.bg, replace_a_bg = specs.DiffDelete.bg, } end local ness_list = { "dim", "bright", "stark", "warm", "default" } for _, ness in ipairs(ness_list) do local specs_name = ness ~= "default" and "specs_" .. ness or "specs" local specs = getfenv()[specs_name] if specs then ---@diagnostic disable: undefined-global -- selene: allow(undefined_variable) run( { specs, background }, specs_to_colors, to_lualine, { prepend, "-- This file is auto-generated by shipwright.nvim" }, { overwrite, string.format("lua/lualine/themes/%s_%s.lua", name, ness) } ) -- selene: deny(undefined_variable) ---@diagnostic enable: undefined-global end end