From ec5017126c58fe38df897c621ac3841dbd8a4a3d Mon Sep 17 00:00:00 2001 From: tuberry <17917040+tuberry@users.noreply.github.com> Date: Sat, 26 Mar 2022 01:25:06 +0800 Subject: [PATCH] feat: support themes other than defaults Try to activate a theme if not presented in defaults. Accordingly, add the option `ui.colors` to provide the missing `hl_theme*` in the custom theme. --- lua/colors/init.lua | 32 ++++++++++++++++++++++---------- lua/core/default_config.lua | 1 + 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lua/colors/init.lua b/lua/colors/init.lua index 8927251..b3917ca 100644 --- a/lua/colors/init.lua +++ b/lua/colors/init.lua @@ -13,22 +13,34 @@ M.init = function(theme) if present then -- first load the base16 theme - base16(base16.themes(theme), true) - - -- unload to force reload - package.loaded["colors.highlights" or false] = nil - -- then load the highlights - require "colors.highlights" + local ok, array = pcall(base16.themes, theme) + + if ok then + base16(array, true) + -- unload to force reload + package.loaded["colors.highlights" or false] = nil + -- then load the highlights + require "colors.highlights" + else + pcall(vim.cmd, "colo " .. theme) + end + else + pcall(vim.cmd, "colo " .. theme) end end -- returns a table of colors for given or current theme M.get = function(theme) - if not theme then - theme = vim.g.nvchad_theme + local colors = require("core.utils").load_config().ui.colors + + if #colors ~= 0 then + return require(colors) + else + if not theme then + theme = vim.g.nvchad_theme + end + return require("hl_themes." .. theme) end - - return require("hl_themes." .. theme) end return M diff --git a/lua/core/default_config.lua b/lua/core/default_config.lua index eb17228..9676a48 100644 --- a/lua/core/default_config.lua +++ b/lua/core/default_config.lua @@ -46,6 +46,7 @@ M.options = { M.ui = { hl_override = "", -- path of your file that contains highlights + colors = "", -- path of your file that contains colors italic_comments = false, theme = "onedark", -- default theme