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(specs) return { common_fg = specs.Folded.fg, inactive_bg = specs.StatusLineNC.bg, inactive_fg = specs.StatusLineNC.fg, normal_a_bg = specs.PmenuSbar.bg, normal_b_bg = specs.PmenuSel.bg, normal_c_bg = specs.StatusLine.bg, 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 run( specs, specs_to_colors, to_lualine, { prepend, "-- This file is auto-generated by shipwright.nvim" }, { overwrite, string.format("lua/lualine/themes/%s.lua", name) } )