-
-
Notifications
You must be signed in to change notification settings - Fork 46
/
lightline.lua
92 lines (81 loc) 路 3.1 KB
/
lightline.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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) }
)