maxmx03.solarized.nvim/lua/solarized/command.lua
2024-08-26 09:02:23 -03:00

71 lines
1.7 KiB
Lua

local command = {}
local subcommands = {
colors = function(_)
local config = require 'solarized.config'
local palette = require 'solarized.palette'
local colors = palette[config.palette]
local buf = vim.api.nvim_create_buf(true, true)
local max_length = vim.tbl_count(colors)
local function color_desc(color)
local colors_desc = {
base03 = 'background (dark)',
base02 = 'background highlight (dark)',
base01 = 'comments (dark)',
base00 = 'foreground (light)',
base0 = 'foreground (dark)',
base1 = 'comments (light)',
base2 = ' background highlight (light)',
base3 = 'background (light)',
}
local desc = colors_desc[color]
if not desc then
return ''
end
return desc
end
local function set_lines(color, hex, line)
vim.api.nvim_buf_set_lines(buf, line, (line + 1), false, {
color
.. string.rep('.', max_length - #color)
.. ' = "'
.. tostring(hex)
.. '" '
.. color_desc(color),
})
return line + 1
end
local line = 0
for color, hex in pairs(colors) do
if type(hex) == 'table' then
for c, h in pairs(hex) do
line = set_lines(c, h, line)
end
else
line = set_lines(color, hex, line)
end
end
vim.api.nvim_set_option_value('modifiable', false, { buf = buf })
vim.api.nvim_set_option_value('filetype', 'Solarized', { buf = buf })
vim.api.nvim_buf_set_name(buf, 'Solarized Colors')
vim.api.nvim_win_set_buf(0, buf)
end,
}
function command.list()
return vim.tbl_keys(subcommands)
end
function command.load(cmd, arg)
subcommands[cmd](arg)
end
return command