You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.6 KiB
92 lines
2.6 KiB
10 months ago
|
local command = {
|
||
|
zen_mode = false,
|
||
|
}
|
||
|
|
||
|
local subcommands = {
|
||
|
colors = function(arg)
|
||
|
local palette = require('solarized.palette')
|
||
|
local colors = palette.get_colors()
|
||
|
|
||
|
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 tone (main)',
|
||
|
base02 = 'background tone (highlight/menu/LineNr)',
|
||
|
base01 = 'content tone (comment)',
|
||
|
base00 = 'content tone (winseparator)',
|
||
|
base0 = 'content tone (foreground)',
|
||
|
base1 = 'content tone (statusline/tabline)',
|
||
|
base2 = 'background tone (highlight)',
|
||
|
base3 = 'background tone (main)',
|
||
|
}
|
||
|
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,
|
||
|
zen = function()
|
||
|
local colors = require('solarized.palette').get_colors()
|
||
|
local solarized = require('solarized.highlights')
|
||
|
|
||
|
if not command.zen_mode then
|
||
|
local highlights = {
|
||
|
Keyword = { fg = colors.base01 },
|
||
|
['@keyword.return'] = { fg = colors.base01 },
|
||
|
Statement = { fg = colors.base01 },
|
||
|
Delimiter = { fg = colors.base01 },
|
||
|
['@constructor'] = { fg = colors.base01 },
|
||
|
['@tag'] = { fg = colors.base01 },
|
||
|
['Type'] = { fg = colors.base01 },
|
||
|
['@type'] = { fg = colors.base01 },
|
||
|
['@include'] = { fg = colors.base01 },
|
||
|
}
|
||
|
|
||
|
solarized.custom_hl(highlights)
|
||
|
command.zen_mode = true
|
||
|
else
|
||
|
local config = require('solarized.config')
|
||
|
solarized.highlights(colors, config.config or config.default_config())
|
||
|
command.zen_mode = false
|
||
|
end
|
||
|
end,
|
||
|
}
|
||
|
|
||
|
function command.list()
|
||
|
return vim.tbl_keys(subcommands)
|
||
|
end
|
||
|
|
||
|
function command.load(cmd, arg)
|
||
|
subcommands[cmd](arg)
|
||
|
end
|
||
|
|
||
|
return command
|