mirror of
https://github.com/acedanger/dotfiles.git
synced 2025-12-05 22:30:13 -08:00
47 lines
1.3 KiB
Lua
47 lines
1.3 KiB
Lua
---@module "picker.colorscheme"
|
|
---@author sravioli
|
|
---@license GNU-GPLv3
|
|
|
|
local Utils = require "utils"
|
|
local Picker, Layout = Utils.class.picker, Utils.class.layout
|
|
|
|
return Picker.new {
|
|
title = " Colorscheme",
|
|
subdir = "colorschemes",
|
|
fuzzy = true,
|
|
fuzzy_description = "Fuzzy matching: ",
|
|
|
|
build = function(__choices, _, opts)
|
|
local choices = {}
|
|
for _, item in pairs(__choices) do
|
|
local id, label = item.value.id, item.value.label
|
|
local colors = item.module.scheme
|
|
---@cast label string
|
|
|
|
local ChoiceLayout = Layout:new "ColorschemeChoices"
|
|
for i = 1, #colors.ansi do
|
|
local bg = colors.ansi[i]
|
|
ChoiceLayout:append("none", bg, " ")
|
|
end
|
|
|
|
ChoiceLayout:append("none", "none", " ")
|
|
for i = 1, #colors.brights do
|
|
local bg = colors.brights[i]
|
|
ChoiceLayout:append("none", bg, " ")
|
|
end
|
|
|
|
local Config = opts.window:effective_config()
|
|
local fg = Config.color_schemes[Config.color_scheme].foreground
|
|
ChoiceLayout:append("none", "none", (" "):rep(5))
|
|
ChoiceLayout:append("none", fg, label)
|
|
choices[#choices + 1] = { label = ChoiceLayout:format(), id = id }
|
|
end
|
|
|
|
table.sort(choices, function(a, b)
|
|
return a.id < b.id
|
|
end)
|
|
|
|
return choices
|
|
end,
|
|
}
|