add runner for lightline
This commit is contained in:
92
lua/zenbones/shipwright/runners/lightline.lua
Normal file
92
lua/zenbones/shipwright/runners/lightline.lua
Normal file
@@ -0,0 +1,92 @@
|
||||
local template = [[let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
|
||||
|
||||
let s:p.normal.left = [ [ "$common_fg", "$normal_a_bg", "bold" ], [ "$common_fg", "$normal_b_bg" ] ]
|
||||
let s:p.normal.middle = [ [ "$normal_c_fg", "$normal_c_bg" ] ]
|
||||
let s:p.normal.right = [ [ "$common_fg", "$normal_b_bg" ], [ "$common_fg", "$normal_b_bg" ] ]
|
||||
let s:p.normal.warning = [ [ "$warning_fg", "$warning_bg" ] ]
|
||||
let s:p.normal.error = [ [ "$error_fg", "$error_bg" ] ]
|
||||
|
||||
let s:p.inactive.left = [ [ "$inactive_fg", "$inactive_bg" ], [ "$inactive_fg", "$inactive_bg" ] ]
|
||||
let s:p.inactive.middle = [ [ "$inactive_fg", "$inactive_bg" ] ]
|
||||
let s:p.inactive.right = [ [ "$inactive_fg", "$inactive_bg" ] ]
|
||||
|
||||
let s:p.insert.left = [ [ "$common_fg", "$insert_a_bg", "bold" ], [ "$common_fg", "$normal_b_bg" ] ]
|
||||
let s:p.replace.left = [ [ "$common_fg", "$replace_a_bg", "bold" ], [ "$common_fg", "$normal_b_bg" ] ]
|
||||
let s:p.visual.left = [ [ "$common_fg", "$visual_a_bg", "bold" ], [ "$common_fg", "$normal_b_bg" ] ]
|
||||
|
||||
let s:p.tabline.left = [ [ "$tabline_left_fg", "$tabline_left_bg", "italic" ] ]
|
||||
let s:p.tabline.middle = [ [ "$inactive_fg", "$inactive_bg" ] ]
|
||||
let s:p.tabline.right = [ [ "$tabline_right_fg", "$tabline_right_bg" ] ]
|
||||
let s:p.tabline.tabsel = [ [ "$tabsel_fg", "$tabsel_bg", "bold" ] ]
|
||||
|
||||
let g:lightline#colorscheme#$name#palette = lightline#colorscheme#fill(s:p)
|
||||
]]
|
||||
|
||||
local helpers = require "shipwright.transform.helpers"
|
||||
|
||||
local check_keys = {
|
||||
"name",
|
||||
"common_fg",
|
||||
"inactive_bg",
|
||||
"inactive_fg",
|
||||
"normal_a_bg",
|
||||
"normal_b_bg",
|
||||
"normal_c_bg",
|
||||
"normal_c_fg",
|
||||
"insert_a_bg",
|
||||
"visual_a_bg",
|
||||
"replace_a_bg",
|
||||
"tabline_left_bg",
|
||||
"tabline_left_fg",
|
||||
"tabline_right_bg",
|
||||
"tabline_right_fg",
|
||||
"tabsel_bg",
|
||||
"tabsel_fg",
|
||||
"warning_bg",
|
||||
"warning_fg",
|
||||
"error_bg",
|
||||
"error_fg",
|
||||
}
|
||||
|
||||
local function transform(colors)
|
||||
for _, key in ipairs(check_keys) do
|
||||
assert(colors[key], "lightline colors table missing key: " .. key)
|
||||
end
|
||||
|
||||
local text = helpers.apply_template(template, colors)
|
||||
return helpers.split_newlines(text)
|
||||
end
|
||||
|
||||
local function specs_to_colors(specs)
|
||||
return {
|
||||
name = name,
|
||||
common_fg = specs.Folded.fg.hex,
|
||||
inactive_bg = specs.StatusLineNC.bg.hex,
|
||||
inactive_fg = specs.StatusLineNC.fg.hex,
|
||||
normal_a_bg = specs.PmenuSbar.bg.hex,
|
||||
normal_b_bg = specs.PmenuSel.bg.hex,
|
||||
normal_c_bg = specs.StatusLine.bg.hex,
|
||||
normal_c_fg = specs.StatusLine.fg.hex,
|
||||
insert_a_bg = specs.DiffText.bg.hex,
|
||||
visual_a_bg = specs.Visual.bg.hex,
|
||||
replace_a_bg = specs.DiffDelete.bg.hex,
|
||||
tabline_left_bg = specs.PmenuSel.bg.hex,
|
||||
tabline_left_fg = specs.Normal.fg.hex,
|
||||
tabline_right_bg = specs.PmenuSel.bg.hex,
|
||||
tabline_right_fg = specs.Normal.fg.hex,
|
||||
tabsel_bg = specs.Normal.bg.hex,
|
||||
tabsel_fg = specs.Normal.fg.hex,
|
||||
warning_bg = specs.DiagnosticVirtualTextWarn.bg.hex,
|
||||
warning_fg = specs.DiagnosticVirtualTextWarn.fg.hex,
|
||||
error_bg = specs.DiagnosticVirtualTextError.bg.hex,
|
||||
error_fg = specs.DiagnosticVirtualTextError.fg.hex,
|
||||
}
|
||||
end
|
||||
|
||||
run(
|
||||
specs,
|
||||
specs_to_colors,
|
||||
transform,
|
||||
{ prepend, [[" This file is auto-generated by shipwright.nvim]] },
|
||||
{ overwrite, string.format("autoload/lightline/colorscheme/%s.vim", name) }
|
||||
)
|
||||
Reference in New Issue
Block a user