-
Notifications
You must be signed in to change notification settings - Fork 0
Palette Providers
Palette providers add themes without placing them in Neotheme's core repository. Providers are
optional and load only when listed in palette_packs.
With lazy.nvim:
{
"alsi-lawr/neotheme.nvim",
dependencies = {
"alsi-lawr/neotheme-packs.nvim",
},
config = function()
require("neotheme").setup({
theme = "tokyonight-moon",
palette_packs = {
{ provider = "neotheme_packs", include = "*" },
},
})
vim.cmd.colorscheme("neotheme")
end,
}Installing neotheme-packs.nvim without adding palette_packs does not change the theme list.
Use an explicit list to load only selected families:
palette_packs = {
{
provider = "neotheme_packs",
include = { "kanagawa", "solarized" },
},
}Use include = "*" to load every family returned by that provider. Provider entries and family
names must be unique.
Provider themes work with the browser, :NeothemeSwitch, :NeothemeList, completion, preview,
reset, reload, and require("neotheme").current().
Their source is reported as pack:<provider>. They cannot be edited, saved, or deleted in place.
Use the palette workspace's clone action to create an editable local copy.
Provider families use the normal visibility setting. A disabled family is removed from public lists and completion, but an exact theme name remains available.
Removing a provider from setup removes its themes from memory and does not change local palette files. If the new setup still selects a removed theme, setup fails and retains the previous working configuration and provider inventory.
provider names a Lua module. Requiring it must return:
{
version = 1,
provider = "provider-id",
packs = {
["family-id"] = {
family = "family-id",
themes = {
["theme-id"] = {
background = "dark",
mode = "simplified",
palette = {},
},
},
},
},
}Runtime records accept no extra keys. Each palette must satisfy the complete selected Theme Authoring. Neotheme copies provider data before validation and does not expose the returned tables directly.