local template = [[function! zenbones#generated#$name#load() abort $termcolors $vimcolors let s:italics = (&t_ZH != '' && &t_ZH != '') || has('gui_running') || has('nvim') if !s:italics " start_no_italics " end_no_italics endif endfunction]] local helpers = require "shipwright.transform.helpers" local function to_vim_autoload(colorscheme) local vimcolors, term, name = unpack(colorscheme) local termcolors = "" for i, v in ipairs(term) do termcolors = termcolors .. string.format("let g:terminal_color_%s = '%s'\n", (i - 1), v.hex) end local text = helpers.apply_template(template, { name = name, termcolors = termcolors, vimcolors = table.concat(vimcolors, "\n"), }) return { text } end local lushwright = require "shipwright.transform.lush" -- selene: allow(undefined_variable) run( specs, lushwright.to_vimscript, lushwright.vim_compatible_vimscript, function(vimcolors) return { vimcolors, term, name } end, to_vim_autoload, { prepend, [[" This file is auto-generated by shipwright.nvim]] }, { overwrite, string.format("autoload/zenbones/generated/%s.vim", name) } ) -- selene: deny(undefined_variable) local function remove_italics(specs) local italic_specs = {} for key, hl in pairs(specs) do if hl.gui == "italic" and key ~= "Italic" then table.insert(italic_specs, string.format("highlight %s gui=NONE cterm=NONE", key)) end end return italic_specs end -- selene: allow(undefined_variable) run( specs, remove_italics, { patchwrite, string.format("autoload/zenbones/generated/%s.vim", name), [[" start_no_italics]], [[" end_no_italics]], } ) -- selene: deny(undefined_variable)