Files
zenbones-theme/lua/zenbones/shipwright/runners/vim.lua
2021-11-07 08:16:33 +08:00

71 lines
1.8 KiB
Lua
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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"
---@diagnostic disable: undefined-global
-- 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)
---@diagnostic enable: undefined-global
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 vim.fn.sort(italic_specs)
end
---@diagnostic disable: undefined-global
-- 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)
---@diagnostic enable: undefined-global